У меня есть это сомнение много лет назад, и я всегда заканчиваю тем, что оставляю сценарии SQL вне контроля версий (я всегда стараюсь как можно больше инкапсулировать код в базу данных).
Но мне действительно интересно иметь контроль версий как кода приложения, так и сценариев базы данных; также было бы очень полезно иметь моментальные снимки ситуации с базой данных (только DDL и хранимые процедуры) в каждом коммите.
Будете ли вы иметь код приложения и сценарии SQL в разных ветках (и много раз приходиться выбирать, объединять и т. Д.)?
Ты вообще думаешь, что это хорошая идея?
Обычно, имея связанные с базой данных файлы, например, Построить схему базы данных или предоставить процедуры миграции внутри хранилища приложений прекрасно. В конце концов, вашему приложению нужна база данных, а хранилище должно предоставлять все, что необходимо для настройки. Таким образом, наличие сценариев, которые создают базу данных и даже импортируют некоторые необходимые базовые данные, — это прекрасно.
Было бы даже неплохо включить сценарии, которые предоставляют тестовые данные для запуска ваших тестов (часто называемых арматура).
Единственное, чего я бы хотел избежать — это иметь производство. данные внутри хранилища. Но для всего остального, что требуется для запуска приложения: просто включите его в репозиторий.
Других решений пока нет …