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

851
timeSmith

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

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

2
Когда разработчики делают что-то вживую, они должны фиксировать свои исправления непосредственно в производственной ветке, в конечном итоге объединяя или опровергая новые вещи, которые произошли в апстриме. Будет ли это вариант? slhck 9 лет назад 0
Нет, я не наделен полномочиями инструктировать или делать запросы других разработчиков. Кстати, для этих изменений управление исходным кодом вообще не используется; изменения вносятся на действующем сервере и только на действующем сервере. Я обновил свой вопрос, чтобы отразить это. timeSmith 9 лет назад 0
Можете ли вы во время развертывания сначала зафиксировать локальные изменения в реальном времени, а затем объединить их с производственной веткой? Это довольно беспорядочно для каждого развертывания, но я не вижу другого пути (хотя с Git этого не случалось) slhck 9 лет назад 0
Я не знаю, как это сделать. Я бы сделал, если б мог. Лучшее, что я задумал, - это скопировать все соответствующие файлы с сервера в локальную проверку, которую я храню для этой цели, зафиксировать из этой проверки, перенести в мою извлеченную ветку, объединить, зафиксировать и скопировать результат обратно на сервер. Но это кажется действительно ... я надеюсь, что есть лучший способ. timeSmith 9 лет назад 0

1 ответ на вопрос

1
mc0e

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

Тем не менее, Git может быть использован во многих отношениях. Если ваше развертывание выполняется на работающем сервере, а не на git, то сохранение изменений в git все еще имеет смысл, так что вы можете хотя бы посмотреть, что изменилось когда и откатить материал назад. То, что вы потеряете, - это разумные комментарии и группировка изменений в коммиты, чтобы вы могли видеть, куда вы хотите быстро откатиться, и вы можете видеть, какие изменения в разных файлах могут зависеть друг от друга.

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

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