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 и перед заливкой чистить табличку (мирясь с возможностью, что кто-то добавил свои константы и ты их потрешь).

Отдельных случаев множество - здесь все не предусмотришь. Возможно в некоторых случаях придется пожертвовать возможностью посмотреть разницу между двумя версиями (то-есть возможность останется, но будет работать не так наглядно). Но Твои проблемы в общем случае с разумными затратами времени не решить. А посему там, где надо, просто добавляй нормальные комментарии, когда добавляешь изменения в репозиторий.

Роман

Ответить