Manera inteligente de trabajar con git repo desconectado

Haciendo soporte para un cliente, ellos envían su código base y piden que lo arreglen, en el file zip que envían usualmente hay una carpeta .git que puedo usar para ver lo que han estado haciendo, típicamente varios commits y algunas nuevas twigs desde la última vez Yo lo vi.

No puedo evitar sentir que debería ser capaz de fusionar la carpeta .git en los files comprimidos que recibo de vez en cuando con una copy local del repository. Puedo save cualquier historial, testing de arnés, etc. que uso para soportarlos.

El cliente no usará algo como git hub.

Estoy seguro de que git puede manejarlo, pero no puedo pensar en las runas. En efecto, quiero que cree parches para todo más allá de la última vez que vi el repository y "los reproduje" sobre el mío.

Supongamos que tiene su "copy de trabajo" en /home/me/project .

Puede crear un directory nuevo / vacío /home/me/clientversion .
Descomprime la última copy del file zip en este directory.

Desde /home/me/project , puede agregar un control remoto a ese directory:

 git remote add client /home/me/clientversion 

Luego ejecuta el git fetch client .

En el hostory del project , ahora verá el estado de las twigs en la clientversion de client/branch_name como references al client/branch_name .

Incluso puede tirar, fusionar, rastrear controles remotos …

Para actualizar: descomprima el nuevo file zip dentro de la clientversion , desde el project ejecute el git fetch client .

Nota: como se sugiere en otras respuestas, el git bundle le dará una forma más limpia de administrar lo mismo.

puede hacer que exporten su repository, o parte de él, como package de git. Ver http://git-scm.com/docs/git-bundle

El command

 git bundle create filename master 

crea un file llamado filename que contiene un repository agrupado hasta la revisión marcada por master . Es posible include más de una twig / sugerencia listándolas en la línea de command:

 git bundle create filename master develop bugfix-mybug 

y luego puede agregar el package como un control remoto en su repository local y extraerlo:

 git remote add some-remote-name filename git fetch some-remote-name git merge some-remote-name/master 

si sabe que el repository de destino ya tiene algunas de las confirmaciones, puede exportar packages parciales, especificando una confirmación base para el package, o un time basado. Los commands:

 git bundle create mybundle --since=10.days master git bundle create mybundle version1...master 

creará packages incluyendo todas las confirmaciones necesarias para rebuild la twig maestra, suponiendo que el consumidor del package tiene, respectivamente, la versión de master de 10 días o la confirmación señalada por la label / twig version1

Cuando el cliente produce un nuevo package para que consum, simplemente reemplace el file y vuelva a ejecutar git fetch some-remote-name

Puede tratar el repository como un repository remoto y extraer los cambios desde allí, que puede combinar con su sucursal o volver a establecer la base de su sucursal.

Mover files zip no es el transporte más eficiente, pero funciona. Es suficiente para transportar el directory .git, y puede usar git gc antes de descomprimirlo para ahorrar espacio.

En la otra dirección, puedes usar git bundle para crear un package de solo las partes faltantes, esto será más fácil de combinar.

    Intereting Posts