Pregunta

Si tengo un clon de un repositorio git como una copia en caché en un servidor remoto para el despliegue / estilo Vlad Capistrano, es mejor hacer A)

git archive --format=tar origin/master | (cd #{destination} && tar xf -)

o B)

cp -R cached-copy #{destination} && rm -Rf #{destination}/.git

Para aclarar, el repositorio ya está en el servidor remoto, y sólo quiero copiar una versión particular de un directorio comunicados en el mismo servidor durante el despliegue.

¿Fue útil?

Solución

Yo diría que en realidad

rsync -avP /local/repo/* server:/remote/repo

Esto funciona siempre y cuando está bien saltarse todos los archivos punto en el repositorio, no sólo .git. Si desea omitir solamente .git entonces usted tendrá la opción -f y la página del manual.

I love rsync . Funciona muy bien y la mayoría de las veces se puede utilizar del mismo modo que usar scp!

Otros consejos

A)

Se ahorra la sobrecarga de la red de transferir el directorio .git que posiblemente podría ser bastante grandes dependiendo de la cantidad de la historia y no objetos de la CABEZA actual.

Si alguna vez quería tener un repositorio git real en el extremo remoto es mejor empujar a un depósito de bienes y sólo tener que cambiar los deltas.

Ni!

Una mejor manera de hacer esto es:

  • git fetch la memoria caché
  • clonar el caché a su directorio actual (con las opciones --no-checkout habilitadas)
  • Pedido el commit que desea.

Al hacer un clon local de Git utiliza enlaces duros. Eso significa que, hasta que modifique un archivo, que usted no, usted puede tener 1.000 despliegues y uso (prácticamente) sólo el espacio que se necesita para uno. De esta manera también se hay mucho más rápido archivado o rsync.

También alguien puede ya haber escrito el código para usted.

de vigetlab capistrano_rsync_with_remote_cache

Yo uso este con Subversion y funciona bien para mí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top