Oui, c'est certainement possible.
Disons que j'ai un référentiel nu nommé /srv/production.git
sur le système / serveur de destination.
Sur le système de destination, je peux utiliser la commande cd /srv/production.git; GIT_WORK_TREE=/srv/production-www/ git checkout -f
Si je suis dans un référentiel non nu, la commande est légèrement différente. Disons que j'ai un dépôt non nu à /srv/testing
. Pour vérifier que j'utiliseraiscd /srv/testing/.git; GIT_WORK_TREE=/srv/production-www/ git checkout -f
En fait, sur mon système, j'automatise même cela dans un hook post-commit dans mon production.git
référentiel. Ainsi, lorsque vous passez à production.git
la dernière version, vous passez automatiquement à la racine 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 votre seul accès au système distant est webdav, il devrait certainement être possible d'écrire un hook post-commit qui sera extrait de l'hôte webdav, soit directement, soit vers un emplacement temporaire, que vous pourrez ensuite créer un script de téléchargement.