Sim, isso é certamente possível.
Digamos que eu tenho um repositório vazio nomeado /srv/production.git
no sistema / servidor de destino.
No sistema de destino, posso usar o comando cd /srv/production.git; GIT_WORK_TREE=/srv/production-www/ git checkout -f
Se eu estiver em um repositório não-nua, o comando será um pouco diferente. Digamos que eu tenho um repositório não-nua em /srv/testing
. Para verificar que eu usariacd /srv/testing/.git; GIT_WORK_TREE=/srv/production-www/ git checkout -f
De fato, no meu sistema, eu até automatizo isso em um gancho pós-confirmação no meu production.git
repositório. Portanto, quando você envia para production.git
a versão mais recente, verifica automaticamente a raiz da web.
#!/bin/sh
#
# An example hook script that is called after a successful
# commit is made.
#
# To enable this hook, rename this file to "post-commit".
GIT_WORK_TREE=/srv/production-www/ git checkout -f
# ... misc other commands to verify permissions are set correctly.
Se o seu único acesso ao sistema remoto for webdav, certamente será possível escrever um gancho pós-confirmação que fará o checkout no host webdav, diretamente ou em um local temporário, no qual você poderá criar um script para upload.