В настоящее время я с нетерпением жду возможности работать с пустым git-репозиторием для развертывания на производственном сервере, у меня есть ловушка «post-receive», которая использует git checkout для обновления рабочей папки. Приложение представляет собой сайт PHP.
На самом деле, я задаюсь вопросом, абсолютно ли безопасно нажимать на рабочий сервер с помощью git, когда кто-то использует веб-приложение, обновляет ли git файл транзакционным способом, блокируя все файлы обновления, или он работает? по файлам? Возможно ли, чтобы пользователь загружал страницу и имел CSS старого коммита, но PHP нового? (если ему очень не повезло)
TL; DR: Есть ли риск подтолкнуть, пока люди пользуются сайтом?
Извините за мой английский !
Спасибо за вашу помощь !
Git просто копирует в файлы.
Возможно, вам нужно вручную перезапустить ваш веб-сервер, чтобы забрать
измененные программы php. Будьте осторожны, если вы используете смесь
технологии, некоторые программы будут сразу же выбирать измененные файлы, а другие
может подождать перезагрузки.
В вашем случае вам нужно проверить файл php.ini для
opcache.revalidate_freq = и настройки oapache.enable, которые управляют
если и как часто Apache ищет измененные исходные файлы.
Для производственного сервера, вероятно, безопаснее их отключить и
перезагрузите сервер, чтобы забрать измененные файлы.
Это полностью зависит от того, что использует файлы, и если файлы открыты, и если какие-либо файлы открыты, в какой-то момент их перечитают.
В некоторых системах вы можете обновить файлы на месте, но они игнорируются до тех пор, пока приложение и / или служба не будут перезапущены.
В других системах изменение принимается немедленно.
В других системах файлы открыты, и вы не можете их перезаписать.
Короче говоря, это не имеет ничего общего с git и имеет много общего с тем, что использует файлы.
Кроме того, вы должны знать, что происходит между версиями. Если поля изменились между версиями, вам нужно убедиться, что вы можете обрабатывать случаи, когда страница, получающая сообщение формы, будет получать данные, отличные от ожидаемых.
git обновляет файл транзакционным способом, блокируя все файлы обновления
AFAIK, git работает по принципу «файл за файлом», и отката нет, если что-то не получается в том или ином файле.