Da Anonimo (non verificato) , 29 Aprile 2026

Il problema cross-fork

I server forge (GitHub, GitLab) ospitano molti fork di un repo insieme. Ingenuamente, un singolo packfile delta-comprime tra tutti i fork — efficiente su disco, ma inefficiente quando si serve un singolo fork. Le isole delta vincolano le catene delta cosi le catene di ogni fork rimangono nel proprio insieme di oggetti.

Configurare le isole

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

Repacking con isole

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

Casi d'uso

  • Gitea/GitLab/Forgejo self-hosted con molti fork.
  • Mirror interni che servono piu repo interni.
  • Backup che devono estrarre snapshot per repo rapidamente.

Funzione solo server

Le isole delta contano sul server.

Verifica

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

Errori comuni

Impostare le isole troppo grossolanamente (tutto in una sola isola) — nessun beneficio.

Pseudo-merge bitmap

Git recente abbina le isole delta con bitmap pseudo-merge.