2011-01-17 12 views
7

Estoy en acceso telefónico en un lugar pésimo (sí, todavía sucede en 2011) y trato de clonar un enorme repositorio. Comienza sin problemas, pero cada vez que se desconecta el acceso telefónico (lo que es inevitable, parece), el! #% $ * Hg lo devuelve todo y me queda nuevamente un directorio vacío.¿Hay alguna forma de clonar un repositorio de la web de forma incremental?

¿Existe alguna otra solución que no sea hacerlo en una PC remota y luego descargar todo mediante FTP o algo así?

+1

Depende del tipo de acceso que tenga al repositorio, pero en algunos casos 'rsync' sería una opción. – miku

+0

'rsync' es definitivamente el camino a seguir aquí. Obtendrá un mínimo de transmisiones de archivos redundantes y resultados garantizados, independientemente de la cantidad de reinicios. –

Respuesta

8

En una cáscara del golpe similar se podría hacer algo como esto:

$ hg init myclone 
$ cd myclone 
$ for REV in `seq 10 10 100` ; do hg pull -r $REV <REMOTEREPO>; done 

partir de las 10, cada tirón descargas los próximos 10 revisiones, hasta 100. En caso de una pérdida de conexión, ajuste el primer argumento a seq para que coincida con lo que ya ha sacado.

+4

O en el símbolo del sistema de Windows: 'FOR/L% A IN (10,10,100) do hg pull -r% A ' –

+0

Aunque debe tener en cuenta que la numeración del conjunto de cambios puede ser diferente del repositorio en sentido ascendente si lo hace de esta manera. – Ringding

+0

Traté de impulsarlo aún más y actualmente mantengo un (nuevo) repositorio en caso de que muchos de nosotros tengamos el mismo problema: intente contribuir? : D https://github.com/nootanghimire/hg-clone-bash – cipher

1

Dependiendo de qué tan escamosa sea su conexión, hay dos opciones para realizar clones iniciales.

En primer lugar, puede probar los llamados "clones de transmisión". Estos minimizan Time to First Byte, pero generalmente requieren un poco más de datos para ser transferidos.

Así es como hacer un clon de streaming:

$ hg clone --uncompressed https://~~~~ 

La segunda opción será un clon operación hg --rev, seguido de una serie de tirones incrementales. Esto se comporta de manera similar a la clonación de un repositorio en un pasado remoto y haciendo actualizaciones ocasionales.

$ hg clone --rev 5 https://~~~~ 
0

Sobre la base de las sugerencias aquí,

creé un acuerdo de recompra que hizo esto.

https://github.com/nootanghimire/hg-clone-bash 

Está optimizado para una sola cesión temporal, pero supongo que se puede bifurcar y trabajar en él! :)

Cuestiones relacionadas