git archive vs cp -R

Si tengo un clon de un repository de git como copy en caching en un server remoto para la implementación de estilo capistrano / vlad, ¿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 repository ya está en el server remoto, y solo quiero copyr una versión particular a un directory de versiones en el mismo server durante la implementación.

Yo diría que en realidad

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

Esto funciona siempre que esté bien omitir todos los files de puntos en el repository, no solo .git . Si solo desea omitir .git , necesitará la opción -f y la página man.

Amo rsync . Funciona muy bien y la mayoría de las veces puedes usarlo tal como lo harías con scp.

UN)

Se ahorra la sobrecarga de la networking al transferir el directory .git, que posiblemente podría ser bastante grande, dependiendo de la cantidad de historial y objects que no estén en el HEAD actual.

Si alguna vez quisiste tener un repository de git real en el extremo remoto, es mejor que vayas a un repository real y solo tengas que cambiar los deltas.

¡Ninguno!

Una mejor forma de hacerlo es:

  • git fetch tu caching
  • Clona la caching a tu directory actual (con las opciones --no-checkout habilitadas)
  • Verifica el compromiso que deseas.

Cuando haces un clon local, Git usa enlaces duros. Eso significa que, hasta que modifique un file, lo cual no es posible, puede tener 1,000 implementaciones y usar (virtualmente) solo el espacio que necesitaría para uno. De esta manera también es mucho más rápido archiving o rsync.

Además, es posible que alguien ya haya escrito su código para usted.

el capistrano_rsync_with_remote_cache de vigetlab

Lo uso con Subversion y me funciona bien.