2009-12-04 10 views
5

Pregunta simple, estoy tratando de ejecutar git gc en una máquina con una cuota. Pre-gc, tengo aproximadamente 18 GB de uso, casi todos son mi repositorio git clonado. Mi límite de disco es de 25GB. Durante la operación git gc, se escriben suficientes archivos temporales en el disco para alcanzar mi límite y, por lo tanto, se produce un error en la operación git gc.git gc en la máquina con cuota

Puedo eliminar el .git/objects/pack/tmp_pack_* después de la operación fallida y volver a bajar a 18GB de uso, pero realmente me gustaría completar git gc y reclamar un poco de rendimiento.

¿Hay alguna opción elegante (o serie de otros comandos git) que pueda usar que no implique escribir primero> 7GB de archivos temporales en el disco?

+0

¿Qué versión de git está ejecutando? –

+0

git versión 1.6.4-kb5 –

Respuesta

2

¿Qué parte de gc es importante para usted? Podría intentar ejecutar las partes git-prune y git-repack por separado. Con git-prune, asegúrese de especificar una fecha de corte con la opción --expire. Si hay una tonelada de objetos sueltos en su repositorio, sería útil sacarlos del camino primero. *

Con git-repack, quizás pueda meterse con la profundidad y la configuración de la ventana para obtener algo lo suficientemente pequeño como para funcionar dentro del espacio que tienes

* No pretendo comprender completamente todos los problemas implicados, pero sí noto que la ciruela viene después de el reenvasado en el código git-gc.

0

Parece que la mejor solución es pedirle a TI una cuota más grande, aunque todavía estoy interesado en escuchar soluciones provisionales. Hoy se sentían generosos, pero mañana ... :)

1

git prune es una excelente sugerencia, buena llamada Jefromi.

Otra cosa que puede hacer es comprimir sus otros archivos; git gc; descomprimir.

7z obtiene una compresión increíble, pero no preservará los enlaces duros y el propietario/grupo de Unix, IIRC. Si tiene una cuota, es probable que todos los archivos pertenezcan a su cuenta, por lo que no debe preocuparse por el primer puntaje. Pero el más seguro es tar c --lzma si lo tiene, o simplemente tar czf o cjf. Si tiene muchos archivos pequeños, la fragmentación umm, externa (?) Hasta el tamaño de bloque puede ser significativa.

Cuestiones relacionadas