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

Le problème cross-fork

Les serveurs Forge (GitHub, GitLab) hébergent ensemble plusieurs forks d'un repo. Naïvement, un seul packfile compresse les deltas à travers tous les forks — efficace en disque, mais inefficace pour servir un seul fork. Les îles delta restreignent les chaînes delta pour que celles de chaque fork restent dans son propre ensemble d'objets.

Configurer les îles

[pack]
island = refs/heads/main
island = refs/heads/release/*
island = refs/tags/*

Repack avec îles

git repack -adf --window=250 --depth=50

Cas d'usage

  • Gitea/GitLab/Forgejo self-hosted avec plusieurs forks.
  • Mirrors internes servant plusieurs repos.
  • Backups nécessitant extraction rapide de snapshots par repo.

Fonctionnalité côté serveur uniquement

Les îles delta importent côté serveur. Comme client, vous ne les configurez presque jamais.

Vérifier

git verify-pack -v .git/objects/pack/pack-*.idx | head
GIT_TRACE2_PERF=1 git pack-objects --stdout --revs < refs.txt > out.pack

Erreurs courantes

Définir des îles trop grossières (tout dans une île) — pas de bénéfice. Trop fines (par PR) — taille des packs explose.

Bitmaps pseudo-merge

Git récent apparie les îles delta avec les bitmaps pseudo-merge.