Despliegue automático con Git

Me pregunto si alguien tiene una mejor estrategia para este escenario.

Actualmente estoy alojando mi propio repository remoto de git en el mismo cuadro que el server web.

Todos los repositorys git están bajo el usuario git.

sudo -uwww-data -gwww-data git --git-dir=/var/www/website/.git --work-tree=/var/www/website pull 

Tengo un trabajo cron ejecutándose como root cada minuto que ejecuta este command. El git repo en la carpeta web se clona desde el mismo cuadro al directory de inicio de git donde se almacena en lugar de a través de ssh.

Así que mi pregunta: dado que git no posee los files web, no puede mover el sitio usando un git hook. Asumiría que no quiero que Git tenga sudo, ni funcionaría a través de un git hook, ¿verdad? ¿Hay algo que implemente el sitio más rápido que cada minuto? No quiero que la operación sea muy costosa.

¿Hay algún tipo de raíz demoníaca que pueda ejecutarse y escuchar algún tipo de notificación? ¿Le gusta ver la última hora de modificación de un file?

Tenga en count que este artículo (en francés, traducido a través de Google) informa que sudo funciona con su enfoque:

cambie sudo para permitir que el usuario de gitosis use este command como www-data .
Para hacer esto, ejecutando "visudo" agregue la línea:

 git ALL = (www-data) NOPASSWD: /usr/local/bin/pullhere 

Luego, en cada repository donde sea necesario, agregue el siguiente enlace en un file post-receive :

 sudo -u www-data /usr/local/bin/pullhere /html/u/user/here 

por ejemplo, en / home/git/repositories/projet1.git/hooks/post-receive

Esto podría interesarle si todavía está buscando una forma de realizar deployments automáticos después de un git push:

https://github.com/JamesBrooks/git-runner (con la gem git-runner-deploy).