Sí, esto es ciertamente posible.
Digamos que tengo un repositorio desnudo nombrado /srv/production.git
en el sistema / servidor de destino.
En el sistema de destino puedo usar el comando cd /srv/production.git; GIT_WORK_TREE=/srv/production-www/ git checkout -f
Si estoy en un repositorio no desnudo, el comando es ligeramente diferente. Digamos que tengo un repositorio no descubierto en /srv/testing
. Para verificar que usaríacd /srv/testing/.git; GIT_WORK_TREE=/srv/production-www/ git checkout -f
De hecho, en mi sistema incluso automatizo esto en un enlace posterior a la confirmación en mi production.git
repositorio. Entonces, cuando empuja a production.git
la última versión, se retira automáticamente a la raíz 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.
Si su único acceso al sistema remoto es webdav, ciertamente debería ser posible escribir un enlace posterior a la confirmación que realice el pago en el host webdav, ya sea directamente o en una ubicación temporal, que luego puede escribir una carga.