3 puntos por xguru 2025-03-25 | Aún no hay comentarios. | Compartir por WhatsApp
  • bundle-uri es una nueva función de Git que descarga archivos en caché para precargar los datos del proyecto y luego reducir el complejo proceso de fetch con el servidor
  • Normalmente, el comando git clone negocia con el servidor para descargar los datos necesarios → esto puede ser ineficiente
  • bundle-uri obtiene datos iniciales en caché desde un CDN y después actualiza solo el estado más reciente desde el servidor → puede ahorrar tiempo

¿Se acelera la velocidad de clonado?

Yes? - Puede ser más rápido

  • Si se usa la opción de archivo local, la velocidad de clonado aumenta muchísimo
  • Si se usan archivos bundle en un sistema de archivos montado en una VM o en una caché en la nube, la sincronización puede ser más rápida

No? - Puede ser más lento

  • Parecía que recibir los mismos datos desde un CDN sería más rápido, pero en realidad fue más lento
  • Resultado del experimento: clonar usando bundles fue más lento que un clonado normal
    • Clonado normal: 2 minutos 36 segundos
    • Clonado usando bundle: 3 minutos 20 segundos
  • Ocurre un problema en el que objetos ya recibidos desde el bundle se vuelven a descargar

Maybe? - Tal vez

  • El problema ocurre porque Git solo lee refs/heads (referencias de ramas) desde el archivo bundle
  • Como ignora el resto de las referencias, termina descargando datos adicionales desde el servidor
  • Si se modifica el código de Git para copiar todas las referencias, mejora la velocidad de clonado
    • Tiempo de clonado después del cambio: 2 minutos 19 segundos (más rápido que los 2 minutos 36 segundos anteriores)
    • Cantidad de objetos descargados adicionalmente: 43,877 (aprox. 1% del total)

Cómo modificarlo y aplicar el parche

  • En el código bundle-uri.c de Git, se corrige la parte que ignora las referencias distintas de refs/heads
  • Después del cambio, se copian todas las referencias → mejora la velocidad de clonado
  • Esta corrección fue un parche mínimo de 6 caracteres modificados

¿Deberías usar esta función?

possibly - probablemente podría ayudar

  • En plataformas como GitHub y GitLab, tiene la gran ventaja de reducir la carga de CPU del servidor
    • En vez de calcular directamente el packfile en el servidor, puede resolverse desde el CDN → ahorro de recursos del servidor
  • Casos en los que también puede ser útil para usuarios individuales:
    • Cuando se necesitan clonar repetidamente repositorios grandes en un servidor Git interno
    • Cuando un sistema de CI/CD necesita realizar clones completos de forma repetida

En la práctica, es muy probable que termine imponiéndose

  • En el protocolo más reciente de Git, el servidor puede proporcionar al cliente una URL de bundle
  • Si el servidor proporciona la URL del archivo bundle, el cliente lo descarga automáticamente y luego continúa la sincronización
  • Si esta función se activa en GitHub u otros servicios, el usuario prácticamente no tendrá opción de evitarla

Conclusión

  • Usar archivos bundle puede acelerar el clonado, pero al principio también puede volverlo más lento por la forma en que Git los procesa
  • Si se modifica el código de Git para mejorar el manejo de referencias, la velocidad de clonado aumenta
  • Si GitHub, GitLab y otros adoptan esta función, es muy probable que los clientes la usen automáticamente

Aún no hay comentarios.

Aún no hay comentarios.