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

El problema de operaciones de conjunto

Operaciones como clone, fetch y gc necesitan calcular "¿qué objetos son alcanzables desde estos commits?" — un recorrido de grafo que toca cada objeto alcanzable. Los bitmaps de alcanzabilidad almacenan esta respuesta como bitmaps comprimidos, convirtiendo el recorrido en operaciones bitwise OR/AND.

Generación

git repack -adb
git multi-pack-index write --bitmap
git config repack.writeBitmaps true
git config pack.writeBitmaps true

Cómo los usan los servidores

Cuando un cliente clona, el servidor debe enumerar todos los objetos alcanzables. Con bitmaps, esto es un OR sobre los bitmaps de todos los tips de branch.

Bitmaps pseudo-merge (Git 2.45+)

git config pack.writeBitmapPseudoMergeStable true
git config repack.writeBitmapHashCache true

Verificación

ls .git/objects/pack/*.bitmap
git rev-list --use-bitmap-index --count --all
git rev-list --test-bitmap HEAD

Servidor vs cliente

Los bitmaps benefician a ambos lados pero importan más en el servidor.

Errores comunes

Escribir bitmaps en cada gc en repos pequeños — el overhead puede exceder el beneficio.

Números reales

GitHub reportó reducciones del 50-90% en CPU de clone tras habilitar bitmaps. Los tiempos de replicación de GitLab Geo cayeron de horas a minutos.