Trabajar con repositorios de gran tamaño
Git es un excelente sistema de control de versiones ampliamente adoptado y recomendado, pero se deben hacer algunas preocupaciones y cuidar al trabajar con repositorios grandes.
Aunque tener una copia local de repositorios en un sistema de control de versiones distribuido es funcional, puede ser un problema importante cuando hay repositorios grandes en su lugar.
Por ejemplo, Microsoft detectó este problema al migrar un repositorio con más de 300 GB de datos de un sistema interno a Git.
¿Por qué los repositorios se vuelven grandes?
Hay dos causas principales para los repositorios de gran tamaño:
- Historial largo
- Archivos binarios grandes
Clon superficial
Si los desarrolladores no necesitan todo el historial disponible en sus repositorios locales, una buena opción es implementar un clon superficial.
Ahorra espacio tanto en los sistemas de desarrollo local como en el tiempo necesario para la sincronización.
Puede especificar la profundidad del clon que desea ejecutar:
git clone --depth [depth] [clone-url]
También puede reducir los clones filtrando ramas o clonando solo una sola rama.
VFS para Git
VFS para Git ayuda con repositorios grandes. Requiere un cliente LFS de Git.
Los comandos típicos de Git no se ven afectados, pero el LFS de Git funciona con el sistema de archivos estándar para descargar los archivos necesarios en segundo plano cuando se necesitan archivos del servidor.
El cliente de Git LFS se publicó como código abierto. El protocolo es un sencillo con cuatro puntos de conexión similares a los puntos de conexión REST.
Para obtener más información sobre los repositorios de gran tamaño, consulte : Trabajar con archivos grandes y sistema de archivos virtuales para Git: Habilitar Git a escala empresarial.
Escalar
Scalar es una aplicación de .NET Core disponible para Windows y macOS. Con las herramientas y extensiones de Git para permitir que los repositorios de gran tamaño maximicen el rendimiento de los comandos de Git. Microsoft lo usa para repositorios de Windows y Office.
Si Azure Repos hospeda el repositorio, puede clonar un repositorio mediante el protocolo GVFS.
Para ello, habilita algunas características avanzadas de Git, como:
- Clonación parcial: reduce el tiempo para obtener un repositorio en funcionamiento sin descargar todos los objetos de Git inmediatamente.
- Captura previa en segundo plano: cada hora descarga datos de objetos de Git de todos los repositorios remotos, lo que reduce el tiempo de las llamadas de captura de Git en primer plano.
- Desprotección dispersa: limita el tamaño del directorio de trabajo.
- Monitor del sistema de archivos: realiza un seguimiento de los archivos modificados recientemente y elimina la necesidad de que Git examine todo el árbol de trabajo.
- Gráfico de confirmación: acelera los recorridos de confirmación y los cálculos de accesibilidad, lo que acelera los comandos como el registro de Git.
- Multi-pack-index: permite búsquedas rápidas de objetos en muchos archivos de paquete.
- Resultado incremental vuelve a empaquetar los datos de Git empaquetados en menos archivos de paquete sin interrumpir los comandos simultáneos mediante el índice de varios paquetes.
Nota
Actualizamos la lista de características que Scalar configura automáticamente a medida que se publica una nueva versión de Git.
Para obtener más información, consulte: