¿Cómo completar un clon de git para un gran proyecto en una conexión inestable?

Resuelto LaPingvino asked hace 13 años • 18 respuestas

Estoy intentando clonar el código base de LibreOffice, pero en este momento tengo una conexión a Internet de aproximadamente 300 kbps y es todo menos estable. Puedo recuperar la conexión en cualquier momento, pero el proceso de clonación de git ya dejó de funcionar y no hay forma de volver a ejecutarlo. ¿Hay alguna manera de tener una descarga de clon de git más resistente a fallas?

Una opción que consideré es descargar el directorio .git de otra persona, pero depende demasiado de los demás y no me parece la mejor solución posible.

LaPingvino avatar Oct 18 '10 02:10 LaPingvino
Aceptado

Dos soluciones (o más bien soluciones alternativas ) que me vienen a la mente son:

  • Utilice un clon superficial , es decir git clone --depth=1, luego profundice este clon utilizando git fetch --depth=N, aumentando N . Puede utilizar git fetch --unshallow(desde 1.8.0.3) para descargar todas las revisiones restantes.

  • Pídale a alguien que se agrupe con alguna versión etiquetada (consulte la página de manual de git-bundle(1) ). El paquete en sí es un archivo normal, que puede descargar de cualquier forma, a través de HTTP/FTP con soporte para currículum, a través de BitTorrent, a través de rsync, etc. Luego puede crear un clon del paquete, corregir la configuración y realizar más búsquedas en el repositorio oficial de LibreOffice. .

Jakub Narębski avatar Oct 18 '2010 09:10 Jakub Narębski

No creo que esto esté listo todavía. Hay una página antigua de GSoC que planeaba implementar la función deseada. Mi mejor opción es, como sugirió, descargarlo como un directorio. Supongo que puede reanudar las descargas mediante otros protocolos.

Clon reiniciable

Al clonar un repositorio grande (como KDE, Open Office, kernel de Linux), actualmente no hay forma de reiniciar un clon interrumpido. Es posible que a un usuario que se encuentra al final de una tubería pequeña le lleve un tiempo considerable descargar los datos, y si el clon se interrumpe en el medio, el usuario deberá empezar de nuevo desde el principio e intentarlo de nuevo. Para algunos usuarios, esto puede hacer imposible clonar un repositorio grande.

Objetivo: permitir que git-clone reanude automáticamente una descarga previamente fallida a través del protocolo nativo git://. Idioma: C Mentor: Shawn Pearce Sugerido por: Shawn Pearce en gmane


Actualizar

Junto con la git clone --depth=1sugerencia de clonación superficial () en una de las otras respuestas, puede ser útil si alguien puede crear un repositorio simple para usted si puede comunicarse con el proveedor. Puede convertir fácilmente el repositorio básico en un repositorio completo. Lea también los comentarios en esa respuesta, ya que es posible que un clon superficial no siempre ayude.

Jungle Hunter avatar Oct 17 '2010 19:10 Jungle Hunter

Este método utiliza un servidor de terceros.

Primero, hazlo git clone --bare, luego rsync -v -P -e ssh user@host:repo.git . puedes usar msys en Windows.

Rafal Rusin avatar Sep 25 '2012 10:09 Rafal Rusin

Aumentar el tamaño del búfer le ayudará con este problema. Sólo sigue los pasos.

  1. Abra la terminal o Git Bash y cdvaya a la ubicación donde desea clonar el repositorio.

  2. Establecer la compresión en 0

    git config --global core.compression 0
    
  3. Establecer postBuffertamaño

    git config --global http.postBuffer 1048576000
    
  4. Establecer maxRequestBuffertamaño

    git config --global http.maxRequestBuffer 100M
    
  5. Ahora comienza a clonar

    git clone <repo url>
    
  6. Espere hasta que se complete la clonación.

Swapnil Naukudkar avatar May 19 '2020 12:05 Swapnil Naukudkar