Как перенести изменения с веб-сервера живого развертывания обратно в репозиторий git

Как перенести изменения с веб-сервера живого развертывания обратно в репозиторий git

Я работаю в среде, где разработчики работают напрямую с файлами скриптов и изображений на веб-сервере живого развертывания. Это пугает и вызвало несколько, хотя пока что удивительно немного, проблем. Контроль исходного кода вообще не используется для этих изменений, изменения вносятся на живом сервере и только на живом сервере. Я не знаю, как сделать так, чтобы изменения, внесенные другими разработчиками на живом веб-сервере, сохранялись/объединялись, когда я развертываю свои изменения на живом веб-сервере. Эта проблема, похоже, ухудшает ситуацию при использовании контроля исходного кода, а не улучшает ее.

Я лично настраивал серверы git и svn и использовал контроль версий с git и svn в течение последних нескольких лет во многих проектах настольных и мобильных приложений. Но это поставило меня в тупик.

решение1

Лучше всего использовать git как часть процесса развертывания. Настолько, что вы найдете относительно мало ответов о других вариантах использования git.

Тем не менее, git можно использовать многими способами. Если вы развертываете на живом сервере, а не из git, то все равно есть смысл в фиксации изменений в git, так что вы можете по крайней мере видеть, что и когда изменилось, и откатывать все назад. Вы потеряете разумные комментарии и группировку изменений в коммиты, чтобы вы могли видеть, куда вы хотите быстро откатиться, и вы можете видеть, какие изменения в разных файлах, скорее всего, будут зависеть друг от друга.

Вполне возможно сделать так, чтобы ваш текущий код был рабочим каталогом git, и вы можете автоматически запускать обновления репозитория с заданной периодичностью из cron.

etckeeper (https://github.com/joeyh/etckeeper) в некотором смысле сопоставим. Он разработан для записи изменений в каталоге /etc сервера, а не на веб-сайте, но в остальном он довольно похож на то, что вы имеете в виду. Он, вероятно, будет иметь некоторые полезные идеи, спрятанные в его коммит-хуках и т. п., но он также усложнен тем, что охватывает несколько различных систем VCS и совместим с несколькими операционными системами.

Связанный контент