Trabajo con repositorios grandes

Completado

Git es un excelente sistema de control de versiones ampliamente adoptado y recomendado, pero es necesario prestar atención a algunos aspectos al trabajar con repositorios de gran tamaño.

Aunque es práctico tener una copia local de los repositorios en un sistema de control de versiones distribuido, puede convertirse en un gran problema si hay repositorios grandes.

Por ejemplo, Microsoft ha detectado este problema al migrar un repositorio con más de 300 GB de datos de un sistema interno a Git.

¿Por qué aumenta el tamaño de los repositorios?

Hay dos causas principales que explican la existencia de los repositorios grandes:

  • Historial largo
  • Archivos binarios grandes

Clon superficial

Si los desarrolladores no necesitan todo el historial disponible en sus repositorios locales, una buena opción consiste en implementar un clon superficial.

Ahorra espacio en los sistemas de desarrollo local y tiempo a la hora de sincronizar.

Puede especificar la profundidad del clon que quiere ejecutar:

git clone --depth [depth] [clone-url]

También puede reducir los clones mediante el filtrado de las ramas o la clonación de una sola rama.

VFS para Git

VFS para Git ayuda con los repositorios grandes. Requiere un cliente de 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 LFS de Git se publicó como código abierto. El protocolo es sencillo, ya que cuenta con cuatro puntos de conexión similares a los puntos de conexión REST.

Para más información sobre los repositorios grandes, vea: Trabajo con archivos grandes y Sistema de archivos virtual para Git: habilitación de Git a escala empresarial.

Escalar

Captura de pantalla del icono Escalar.

Scalar es una aplicación de .NET Core disponible para Windows y macOS. Con herramientas y extensiones para Git para permitir que los repositorios muy grandes maximicen el rendimiento de los comandos de Git. Microsoft la usa para repositorios de Windows y Office.

Si el repositorio se hospeda en Azure Repos, puede clonarlo un mediante el protocolo GVFS.

Para ello, habilita algunas características avanzadas de Git, como las siguientes:

  • Clonación parcial: reduce el tiempo necesario para obtener un repositorio funcional al no descargar directamente todos los objetos de Git.
  • 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 el 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.
  • Índice de varios paquetes: permite búsquedas rápidas de objetos en muchos archivos de paquete.
  • Reempaquetado 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

Cuando se publica una nueva versión de Git se actualiza la lista de características que Scalar configura automáticamente.

Para más información, consulte: