2011-05-13 10 views
8

Estoy intentando hacer un script de copia de seguridad simple para mis repositorios git hospedados de forma remota. En el guión Tengo un par de líneas que en la actualidad este aspecto:¿Cómo puedo canalizar un clon git para archivar (tar o gzip)

git clone [email protected]:repo.git $DEST 
tar czvf repo.tgz $DEST 
rm -rf $DEST 

¿Hay una manera de hacer que esto suceda todo en una línea? ¿Puedo conectar el clon git al comando tar? No necesito el directorio clonado, solo quiero el archivo comprimido de él.

He intentado algunos experimentos pero no puedo entender la sintaxis.

Respuesta

11

No, no puede simplemente conectar git clone porque no lo escribe en la salida estándar. ¿Y por qué necesitas un trazador de líneas único? Son geniales para jactarse de que puedes hacer algo genial en una sola línea, pero no son realmente ideales en el mundo real.

Usted puede hacer algo como abajo, pero no te dan .git igual que lo haría en un git clone:

git archive --format=tar [email protected]:repo.git master | tar -xf - 

De git archive manual de

--remote=<repo> 

    Instead of making a tar archive from the local repository, retrieve a tar archive from a remote repository. 
+3

La opción '' --remote' a archive' Git requiere que el servidor tenga una opción habilitada para permitirlo. Por defecto no está habilitado. – Arrowmaster

+0

Si lo entiendo correctamente, git archive solo es útil como copia de seguridad de los archivos contenidos en un git repo. ¿Derecha? Lo que me gustaría hacer es crear una copia de seguridad completa del repositorio y toda la información contenida en las versiones. Así que creo que todavía quiero usar git clone. –

+0

En cuanto a hacerlo en una línea, sí, es "genial" seguro. Sin embargo, también estaba tratando de evitar la clonación de un gran repositorio y luego copiar una compresión de este. Y luego borrando esa copia. Intentaba ser eficiente con las grabaciones de disco, pero como afirmas que git clone no es estándar, creo que tengo que ir con lo que estaba planeando antes. –

Cuestiones relacionadas