|
|
|
ASE 12.5 - синхронизация с версионником.
|
|||
|---|---|---|---|
|
#18+
Господа, всем доброе время суток. На работе встала реальная задача навести порядок с версионником. Просто сравнивать объекты в БД и скрипты из версионника на основе тэгов проставляемых этим самым версионником нельзя, т.к. бывает, что DML выгружают прямо из БД и потом его правят и ставят обратно. Номер версии остаётся неизменным, но объект уже другой. В общем-то, эти случаи и надо отловить. Остаётся только выгрузить DML объекта и сравнить его со скриптом в версионнике. Возникает вопрос, как лучше сравнивать, т.к. тексты могут быть совершенно неидентичные из-за пробелов и возвратов каретки (например sp_helptext - часто грешит тем, что произвольно разбивает строку) Я подумал на таким решением - выгрузить DML из базы. Оставить только тело - убрав разные проверки типа if object_id(...) is not null итп, и тоже убрать разные опции которые могут следовать за созданием объекта. Т.е. по сути оставить только то, что находится между create и go. В этом тексте убрать комментарии проставленные версионником - это несложно сделать. Ну и наконец убрать из него все пробелы и возвраты каретки, так чтобы получилась одна строка. Рабочие комментарии, при данном подходе я считаю частью кода и они должны быть в версионнике тоже. Проделать аналогичную очистку скрипта из версионника и потом обе строки сравнить. Довольно несложно сделать скрипт (например на Перле), которые бы выполнял подобное сравнение проходя в цикле по sysobjects. Насколько такой вариант может быть рабочим? Какие здесь могут быть неувязки? Что при таком подходе, может остаться незамеченным. Тоже, может быть я изобретаю велосипед и есть уже некоторое количество готовых решений. Если у кого есть опыт решения подобных задач, большая просьба откликнуться. Заранее огромное спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2009, 17:57 |
|
||
|
ASE 12.5 - синхронизация с версионником.
|
|||
|---|---|---|---|
|
#18+
Мы решали так: Начали считать правильным не то, что в базе, а все то, что в версионнике. Для достижения этого у нас пользовалась такая стратегия: Днем девелореры могут делать все что хотят в своей девелоперской базе. Ночью база перезаливается из тестерской и накатываются все изменения из версионника. Т.о. если кто-чего не сохранил в версионнике - сам виноват. В тесты и в продуктив все ставилось только из версионника. -- ЗЫ: Версионники (например subversion) уже предоставляют тулзни для сравнения. Не вижу смысла писать что-то свое... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2009, 15:43 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=36284468&tid=2010848]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
153ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 16ms |
| total: | 256ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...