Vâng, điều này chắc chắn là có thể.
Hãy nói rằng tôi có một kho lưu trữ trần có tên /srv/production.git
trên hệ thống / máy chủ đích.
Trên hệ thống đích tôi có thể sử dụng lệnh cd /srv/production.git; GIT_WORK_TREE=/srv/production-www/ git checkout -f
Nếu tôi ở trong một kho lưu trữ không trống, lệnh sẽ hơi khác một chút. Hãy nói rằng tôi có một kho lưu trữ không trần tại /srv/testing
. Để kiểm tra rằng tôi sẽ sử dụngcd /srv/testing/.git; GIT_WORK_TREE=/srv/production-www/ git checkout -f
Trong thực tế trên hệ thống của tôi, tôi thậm chí tự động hóa điều này trong một hook hậu cam kết trong production.git
kho lưu trữ của tôi . Vì vậy, khi bạn đẩy lên production.git
phiên bản mới nhất sẽ tự động kiểm tra root 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.
Nếu quyền truy cập duy nhất của bạn vào hệ thống từ xa là webdav, chắc chắn bạn có thể viết một hook post-commit sẽ kiểm tra máy chủ webdav, trực tiếp hoặc đến một vị trí tạm thời, sau đó bạn có thể kịch bản tải lên.