Ведется разработка сайтов при которой на локальной копии дописываются модули, в то время как на рабочем сайте могут появляться новости, регистрироваться пользователи и всячески вестись деятельность.
Собственно, существует ли ПО, которое может обновить существующий сайт на основе локальной копии разработчика? Архивирование, копирование и последующее извлечение с заменой вариант не очень действенный, поскольку приходится подключаться дополнительно по SSH, а обновление может происходить достаточно часто.
И аналогичный вопрос по БД MySQL, если есть 2 файла дампа базы, можно ли выявить их различия и сохранить их в виде update скрипта?
GIT изначально идеологически ориентирован на работу с изменениями, а не с файлами, «единицей обработки» для него является набор изменений, или патч.
По MySQL по мне кажется ведение Update скрипта лежит на разработчике, т.е новая версия сайта (изменения БД ) строится на основе существующей структуры добавлением sql команд в update скрипт.
Для git нужен сервер. Не хотелось бы использовать интернет сервера, а вот о том, как заставить дружить локальный и удаленный git я, увы, ранее не встречал.
Для SQL нужна не сколько структура, сколько новые данные. Структура естественно сохраняется в update скрипте, но вот как быть с добавленными данными? И отдельным вопросом еще стоит случай, когда запись ведется в таблицу, данные в которую уже были дописаны. Например, добавив нового пользователя на локальной версии его просто нельзя перенести на рабочую, поскольку его id уже занят. Будь это добавление только в одну таблицу, все было бы просто, но что делать, если с пользователем связан еще десяток таблиц, данные из которых надо мигрировать?
Александр Кошеверов: из практической реализации - локальный (главный) гитсервер подключается (тут тоже масса вариантов/реализаций) к удаленному хосту (вебсервер) и на веб сервере выполняется pull (получаете последнюю версию)
Из плюсов можно перед пуллом проверить результат локально.
С базой все намного сложнее, проблемы вы видите. Я думаю это не входит в плоскость обновления, это скорее ведение оффлайн базы. С последующей догрузкой на сервер. Я бы с этой стороны подходил к решению проблемы. То что меняет структуру - апдейт скрипт, касательно данных - обновление оффлайн собранных данных.
Daemon23RUS: в git таки нашел интересную вещь, которая все же может помочь без сервера все реализовать: патчи. git format-patch и git am для применения различий. А вот с бд беда, жалко, что нет готовых решений для подобных миграций в виде генерации процедур.
Хотя, его можно сохранить в переменную через SET, так что думаю в этом направлении разберусь. Но все равно писать скрипт, который генерирует update sql придется писать самому, интересовали же какие-либо готовые решения, которому можно было бы указать связи и условия, а он сформировал бы подобный скрипт.