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

Le compromis shallow

Un clone shallow (--depth=N) télécharge seulement les N derniers commits. Plus rapide, plus petit, mais avec mises en garde : beaucoup d'opérations dépendantes de l'historique deviennent impossibles ou erronées.

Invocation basique

git clone --depth=1 https://example.com/repo.git
git clone --depth=50 --no-tags https://example.com/repo.git
git clone --shallow-since=2024-01-01 https://example.com/repo.git
git clone --shallow-exclude=v1.0.0 https://example.com/repo.git

Single-branch

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

Ce qui casse

  • git log s'arrête à la limite shallow.
  • git blame assigne les changements plus profonds au commit limite.
  • git bisect ne peut chercher que dans la fenêtre shallow.
  • git merge-base peut échouer.

Promouvoir plus tard

git fetch --unshallow
git fetch --depth=1000
git fetch --shallow-since=2023-01-01

Patterns CI

git clone --depth=1 --no-tags --filter=tree:0 \
  --branch "$CI_COMMIT_REF_NAME" "$CI_REPOSITORY_URL" .

Quand éviter shallow

  • Builds release qui embarquent git describe.
  • Scanners SBOM/license qui parcourent l'autorité.
  • Étapes bisect ou blame en CI.
  • Calculs merge-base contre branche base de longue durée.

Erreurs courantes

Utiliser --depth=1 dans pipeline release qui exécute git describe.