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

Le coût des clones complets

Un clone complet d'un dépôt de longue durée peut faire des centaines de mégaoctets, à chaque job CI, multiplié par chaque push.

Bases du clone shallow

git clone --depth=1 https://example.com/repo.git

Shallow avec plusieurs branches

git clone --depth=1 --no-single-branch https://example.com/repo.git

Clones partiels (Git 2.22+)

git clone --filter=blob:none https://example.com/repo.git
git clone --filter=tree:0 https://example.com/repo.git

Combiner shallow et partial

git clone --depth=1 --filter=blob:none https://example.com/repo.git

Exemple GitHub Actions

- uses: actions/checkout@v4
  with:
    fetch-depth: 1

- name: Get full history when needed
  run: git fetch --unshallow

Limites de shallow

  • Vous ne pouvez pas pusher depuis un clone shallow vers un autre repo sans unshallow d'abord.
  • Certaines opérations sont impossibles.
  • Les forks et configurations complexes de submodules peuvent mal interagir.

Mesurer

time git clone --depth=1 https://example.com/repo.git
time git clone https://example.com/repo.git

Cacher le résultat

if [ -d .git ]; then
  git fetch --depth=1
  git reset --hard FETCH_HEAD
else
  git clone --depth=1 ...
fi