Как заставить git
запускать привязку post-receive
на сервере, даже если у меня нет новой фиксации для нажатия?
Фон
Я использую git для автоматического развертывания веб-сайта на сервере. У меня есть голое репо в защищенной области сервера и крюк post-receive
, который проверяет содержимое и систематически копирует определенные файлы в папку public_html
. (Вдохновленный этот учебник)
Я устал от изменения крюка post-receive
вручную на сервере, поэтому мой крюк post-receive
теперь фактически копирует новую версию себя из репо:
#!/bin/sh
rm -rf ~/../protected/*
GIT_WORK_TREE=~/../protected git checkout -f
# Rewrite over this file with any updates from the post-receive file
cp ~/../protected/post-receive hooks/post-receive
# Delete public_html
# Copy stuff public_html
Проблема, конечно, в том, что новый трюк post-receive
никогда не запускается. Казалось бы, простое решение было бы просто снова нажать, но теперь все уже обновлено. Это раздражает, потому что он требует, чтобы я подделывал новую фиксацию каждый раз, когда я обновляю крюк post-receive
. Есть ли способ вызвать крюк post-receive
без подделки фиксации или ssh
ing?
Что я пробовал
git push
git push -f