Eu tenho o meu estruturado onde o repositório do git está na minha área privada (não visível para a Web, tecnicamente) e configurei um post-receive hook para publicar as alterações no site.
A única grande desvantagem em que consigo pensar é que você não pode http checkout e que alguns hosts bloqueiam a porta que o git usa.
Você pode configurar um gancho de pós-recebimento em um repo com:
-
cdao seugit repo -
Crie o arquivo
post-receivehook (hooks/post-receive) com o seguinte conteúdo e torne-o executável.#!/usr/bin/env basheGIT_WORK_TREE=/path/to/site/folder -
chmod +x hooks/post-receive
Agora, quando você envia alterações, ele faz o checkout no diretório do seu site (por exemplo, publique suas alterações).
[ Fonte ]