¿Usar git para implementar tiene ventajas distintas al envío de .tar.gz?

Esta pregunta busca aislar las diferencias de hechos entre dos enfoques de deployment, no subjetivos. Revise la list al final de conceptos concretos.

Actualmente estoy buscando opciones para implementar mi aplicación donde sea que esté construida. He leído mucho y estoy familiarizado con la forma en que se usa git para el deployment. También he visto cómo puedes simplemente crear un tar.gz de los files deseados y luego enviarlo al server.

Cuanto más pienso sobre esto, más me siento como que simplemente crear secuencias de commands de la creación y envío del file es más simple y es "más estático" que depender de git para implementar.

Los principales factores hasta ahora que me tienen a favor de un file simple son:

  • El destino no tiene que tener git ni ninguna otra herramienta instalada
  • No tengo que configurar ninguna key especial para el pago de la dependencia en el destino
  • Al usar git, el repository desplegado siempre será más grande que el código desplegado real
  • Voy a tener un repository less git para mezclar con mantener constante
  • En mi caso específico, también tengo dependencies que se crean o recuperan fuera del repository de git (compositor, bower, gruñido)
  • Puedo seleccionar un subset de files para implementar, no toda la twig / label
  • El package preparado es una distribución totalmente funcional de mi sitio, casi como un binary

Otras lecturas:

  • http://gitolite.com/deploy.html#why-git-is-not-a-deployment-tool

Hay dos forms diferentes de hacer esto. Una es clonar el repository git en el server y hacer tiradas desde la línea de command en el server. El segundo es usar una herramienta de deployment como http://dploy.io/ which (s) ftp's los files del repository al server.

En ambos casos, yo .gitignore del repository cualquier cosa que esté instalada a través de (compositor, bower, gruñido) y lo hago manualmente desde la línea de command en el server cuando sea necesario. Estoy satisfecho con el flujo de trabajo de ambos methods y uso uno más apropiado para el server que se implementará y el equipo que tendrá que realizar implementaciones futuras.

La principal diferencia entre los dos enfoques (además de tener Git en un server de producción) es la cantidad de files que deben transitar por la networking: mientras less files tenga que transferir, less propenso a errores es el process.

Es por eso que prefiero usar git archive para generar el file tar requerido (file del formatting especificado que contiene la estructura de tree para el tree nombrado).

De esa forma, solo tengo que transferir un file, como un file regular, y no necesito a Git del otro lado.