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

Experimentos opt-in

El proyecto Git prueba nuevas características de rendimiento detrás de feature.experimental. Habilitarlo activa configuraciones bajo evaluación para default-on. Es el lugar para mirar al rastrear la vanguardia del rendimiento de Git.

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

El bundle de configuración

Afinar monorepos involucra una docena de configuraciones. En lugar de memorizar y aplicar cada una, Git proporciona "feature flags" que activan un bundle coherente. feature.manyFiles es el más útil: una sola perilla que habilita todas las optimizaciones de índice y stat.

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

Versiones del índice

El índice de Git ha tenido varios formatos. La versión 2 es la baseline histórica. La 3 añadió skip-worktree y otras extensiones. La 4 (recomendada para repos grandes) añade compresión de prefijos de rutas, halvando el tamaño del índice en árboles profundos.

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

El daemon integrado

Git 2.36 introdujo un daemon fsmonitor integrado, eliminando la necesidad de servicios externos como Watchman. Se ejecuta como git fsmonitor--daemon, escucha eventos del SO y responde a las consultas de Git con la lista de rutas cambiadas.

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

El problema del recorrido status

git status compara el árbol de trabajo con el índice, recorriendo la stat info de cada archivo rastreado. En un repo de un millón de archivos esto puede tomar segundos. Fsmonitor usa las notificaciones de cambio de archivos del SO (FSEvents en macOS, ReadDirectoryChangesW en Windows, inotify en Linux).

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

Qué es Scalar

Scalar (originalmente herramienta de Microsoft, incluido con Git en 2.38+) es un wrapper que aplica el stack completo de rendimiento — partial clone, sparse checkout, sparse index, fsmonitor, commit-graph, MIDX, repack geométrico, mantenimiento en background — con un solo comando.

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

Fetching de objetos perezoso

Partial clone (--filter) permite a un clone omitir algunos objetos de la transferencia inicial, trayéndolos perezosamente cuando se necesiten. El remote promisor mantiene su promesa de proporcionarlos bajo demanda.

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

Por qué el índice es lento

Incluso con sparse checkout, el índice por defecto contiene una entrada por archivo en todo el repo — un millón de entradas en un monorepo, incluso si solo mil están presentes en el árbol de trabajo. El sparse index (Git 2.37+) reemplaza directorios excluidos con una sola entrada de tree.

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

El conjunto de trabajo del monorepo

En un monorepo, los desarrolladores individuales suelen tocar un subconjunto pequeño — una o dos apps, un puñado de librerías. Sparse checkout puebla solo esas rutas en el árbol de trabajo, dejando el resto como entradas skip-worktree en el índice.