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.