Совершенно разумно поддерживать схему базы данных в системе контроля версий - фактически, большинство продуктов на основе баз данных делают именно это. Я понятия не имею, как устроен ваш репозиторий, но если у вас нет PHP-кода непосредственно под корнем, все будет в порядке. Если у вас есть PHP-код в корневом каталоге, я настоятельно рекомендую svn mv
в его собственный каталог.
Хранение данных в системе контроля версий немного более проблематично. Если вам нужны эти данные для инициализации базы данных для использования, то, конечно, это имеет смысл. То же самое с данными испытаний. Если вы пытаетесь хранить живые данные, не так уж много (именно поэтому у вас есть база данных). Я не знаю, как MySQL управляет резервным копированием базы данных, но я предполагаю, что есть более компактный формат, чем длинный SQL-скрипт (например, Oracle как exp
формат).
Чтобы привести пример из реальной жизни, вот подход, использованный продуктом, над которым я работал.
- DDL для создания текущей схемы базы данных находился под контролем исходного кода и был частью выпуска.
- SQL (DML) для вставки начальных значений в эту базу данных также находился под контролем исходного кода.
- Для каждого выпуска существовал скрипт для обновления базы данных из предыдущего выпуска. Этот скрипт изменял / добавлял таблицы, а также вставлял / удалял строки.
- Тестовые программы приняли «чистую» базу данных и отвечали за вставку собственных данных.
- Поскольку это был продукт, любые данные после инициализации были добавлены заказчиком.
Я начал работать в компании, когда продукту исполнилось 5 лет, а ушел через 4 года. Я никогда не пробовал выпуск версии 1, но я знаю, что выпуск версии 2.x можно обновить до версии 4.0 (как правило, выпускаются точечные выпуски каждые 4 месяца).