Por Anónimo (no verificado) , 29 Abril 2026

El problema cross-fork

Los servidores Forge (GitHub, GitLab) hospedan muchos forks de un repo juntos. Ingenuamente, un solo packfile comprime delta entre todos los forks — eficiente en disco, pero ineficiente al servir un solo fork. Las islas delta restringen las cadenas delta para que las cadenas de cada fork permanezcan dentro de su propio conjunto de objetos.

Configurar islas

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

Repack con islas

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

Casos de uso

  • Gitea/GitLab/Forgejo self-hosted con muchos forks.
  • Mirrors internos que sirven múltiples repos internos.
  • Backups que necesitan extraer snapshots por repo rápidamente.

Característica solo de servidor

Las islas delta importan en el servidor. Como cliente, casi nunca las configuras.

Verificar

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

Errores comunes

Establecer islas demasiado gruesas (todo en una isla) — sin beneficio. Demasiado finas (por PR) — el tamaño del pack se infla.

Bitmaps pseudo-merge

Git reciente empareja islas delta con bitmaps pseudo-merge.