objectif
Travailler dans un monorepo sans tout télécharger: ne récupérer que quelques dossiers (cone mode), accélérer les clones et diminuer l’espace disque.
code minimal
# clone partiel + sparse (Git ≥ 2.25)
git clone --filter=blob:none --sparse https://git.data.pm/monorepo.git
cd monorepo
git sparse-checkout set services/api packages/ui
utilisation
# 1) convertir un clone existant en sparse
cd monorepo
git sparse-checkout init --cone
git sparse-checkout set services/api packages/ui
# 2) ajouter/retirer des chemins
git sparse-checkout add tools/scripts
git sparse-checkout set services/api # remplace la liste
# 3) cloner au plus léger (sans blobs inutiles)
git clone --filter=blob:none --sparse ssh://git@git.data.pm/monorepo.git
cd monorepo
git sparse-checkout set docs site data-pipelines
# 4) vérifier ce qui est inclus
git sparse-checkout list
# 5) revenir au dépôt complet (désactiver sparse)
git sparse-checkout disable
# 6) rester à jour (le fetch reste partiel; les blobs sont rapatriés à la demande)
git pull --ff-only
# 7) branches: le set est conservé lors des changements de branche
git checkout -b fix/readme origin/main
variante(s) utile(s)
# mode avancé (patterns non "cone")
git sparse-checkout init --no-cone
git sparse-checkout set 'services/*/cmd' '!services/*/cmd/tests' 'packages/**/dist'
# limiter aussi l'historique initial (shallow)
git clone --depth 1 --filter=blob:none --sparse https://git.data.pm/monorepo.git
cd monorepo
git sparse-checkout set services/payments
# forcer une récup des blobs d'un chemin précis (après set)
git checkout -- services/api
# inclure tout un dossier parent puis exclure un sous-dossier (no-cone requis)
git sparse-checkout init --no-cone
git sparse-checkout set 'services/**' '!services/legacy/**'
# scripts rapides pour basculer des ensembles de chemins
paths_core='services/api packages/core packages/ui'
git sparse-checkout set $paths_core
notes
--sparseactive le sparse-checkout à l’init; combinez avec--filter=blob:nonepour un partial clone efficace.- le mode “cone” est recommandé (chemins simples de haut niveau). Utilisez
--no-conepour des patterns glob plus fins. setremplace la liste,addajoute. Vérifiez avecgit sparse-checkout list.- désactiver (
disable) ramène un working tree complet (le dépôt peut encore être partiel; les blobs manquants seront téléchargés à la demande). - adapté aux gros repos hébergés sur git.data.pm: moins d’I/O, moins de réseau, onboarding plus rapide.