git repo en el server de producción: ¿Cuál es el paso después de configurar el repository desnudo?

He creado un repo git al descubierto en mi instancia de EC2 y le he enviado una twig de mi máquina de desarrollo. Puedo ejecutar git log en el server ahora y se ve actualizado con todo.

La máquina de desarrollo ahora tiene dos controles remotos, un "origen" es el repository de Bitbucket.org donde vive el código, y el segundo "ec2" es el control remoto al que presionaría para implementar el código. Parece que cada vez que presiono para "ec2" básicamente sincronizará el repository con lo que sea que tome de Bitbucket. Lo cual es bueno, aunque en el background de mi mente me pregunto qué tendría que hacer de manera diferente para build una historia diferente sin el contenido intermedio. (no importante.)

Sin embargo, en el server, el repository es un repository simple y no tiene ningún tree de trabajo.

¿Cuál es la forma correcta de hacer que el server deployment automáticamente la aplicación web?

Me gustaría que alguien me ayude a comparar y contrastar estos dos methods:

  ... inside the bare repo on the server ... $ cat > hooks/post-receive #!/bin/sh GIT_WORK_TREE=/home/ec2-user/www/webserver-works-off-this-dir export GIT_WORK_TREE git checkout -f 

Alternativamente, creo que podría tener sentido establecer un repository git por separado, es decir,

  ... also on the server ... $ cd /home/ec2-user/www/ $ git clone # ??? How do I clone from localhost bare repo? ... presumbly set the post-receive hook in the bare-repo to cd to *this* dir and run git checkout or pull or something... 

Ah, también, ¿qué hace git checkout -f hacer? ¿Obligar a sobrescribir el último compromiso cronológico? Creo que hay algo implícito de lo que no estoy seguro. Supongo que una operación de push debe estar "adjunta" a alguna confirmación, y esta sería la confirmación en cuestión.

El gancho post-recepción es una buena solución.

La otra alternativa es configurar un segundo repo y un cd no desnudos en ese repository para extraer del primer repository vacío. Lo explico en " ¿ --bare opción --bare es igual a la configuration core.bare en Git? ".

Como se comenta , ambas soluciones son buenas si desea enviar directamente al repository git del server EC2.
Traer directamente el repository BitBucket de una session git en EC2 también puede funcionar.