Я использую git и функцию перехвата сервера для такого рода вещей.
Транспорт закончен по ssh. Развертывание - это мерзкий толчок.
На сервере git push отправляются в пустой репозиторий, который хранится в личном каталоге пользователя. Крюк заставляет жетон оставить для cron. Другая задача cron для другого пользователя берет токен, а git перетаскивает частный пустой репозиторий в каталог развертывания. Это может быть немного Рубе-Голдбергом для некоторых, но это работает для меня.
Дополнительным преимуществом этого подхода является то, что каталог развертывания отличается от пустого хранилища, можно выполнить git diff в каталоге развертывания и посмотреть, изменилось ли что-нибудь интересное ...
Чтобы получить более подробную информацию, создайте пустой пустой репозиторий на сервере (см. Man git-init, --bare), чтобы создать каталог name.git, который вы можете проверить на своем компьютере разработчика с помощью git pull и скопировать все в а затем нажмите обратно на сервер. На сервере в name.git / hooks, post-commit и post-update сделайте «echo hello> / tmp / что-то», чтобы оставить токен для cron. В crontab другой скрипт cron ищет этот файл и, если он его находит, выполняет git pull. Это может сделать и другие вещи, например, если важны настройки совместимости.