Nikolay Trifonov wrote:
Дык, я и говорю о том, что тут и не надо его использовать...
Типа, при установке обновления, проверяем версию базы и версию
программы... Накатываем соответственные изменения каскадно до текущей
версии...
В cvs и svn проблема в другом - для них важен порядок строк. И если по
какой-то причине у Тебя радикально поменяется порядок создания таблиц или
заливки справочников, то искать отличия от предыдущей версии файла будет
сложно.
А разве в текстовом dfm строки поменятся не могут?
Могут. Будет та же проблема - выяснения отличий от предыдущей версии
усложнится и без расширеных комментариев не обойтись. Вопрос только в
том - нужно ли это Тебе или же достаточно доступа к конкретной версии?
В этом случае insert.sql и множество update.sql
предпочтительней.
Я так клиентам новые версии раздаю: ставлю базу, и при обновлении
экзенишника последний коректирует базу до новой версии.
Логично.
Ну хорошо, если возможны глюки, то может тогда лучше делаем create.sql, а
все вносимые изменения в базу делаем через ibexpert, включив в нем функцию
логирования изменений в базе. Но тогда не получиться отследить изменения в
таблицах (я в некоторых из них константы храню). Соответственно вариант с
update.sql неподходит, или я что-то не так понимаю ?
Хммм... и как ты собираешся тогда все из create.sql получить? Перед
релизом делать diff последней и предыдущей версии? Так ведь это не
эквивалентно create.sql из предыдущей версии плюс накатка изменений.
Привожу пример:
Исходная ситуация: у Тебя есть база версии 1.0. В версии 1.1 Ты дропаешь
NOT NULL ограничение на одну из колонок.
Попытка решения через create.sql в версии 1.1:
DROP TABLE myTable;
CREATE TABLE myTable (
....
myChangedColumn INTEGER /* NOT NULL */,
...
);
Как Ты понимаешь, здесь мешает DROP TABLE, а без него CREATE TABLE не
получится. Правильное решение возможно только через update.sql.
А если уж так хочется отслеживать изменения констант в табличке, то
придется для этих констант создать insert_constant.sql и перед заливкой
чистить табличку (мирясь с возможностью, что кто-то добавил свои
константы и ты их потрешь).
Отдельных случаев множество - здесь все не предусмотришь. Возможно в
некоторых случаях придется пожертвовать возможностью посмотреть разницу
между двумя версиями (то-есть возможность останется, но будет работать
не так наглядно). Но Твои проблемы в общем случае с разумными затратами
времени не решить. А посему там, где надо, просто добавляй нормальные
комментарии, когда добавляешь изменения в репозиторий.
Роман