metaclass: (Default)
[personal profile] metaclass
Сижу думаю над шизой.
Имеется описание предметки в виде модели для кодогенерации - хитрозаколдованный набор данных, над которым работают несколько людей и по которому нужно хранить историю.
Для обычной цели "посмотреть кто в прошлом виноват и что делать" истории в виде текстовых diff вполне хватило бы, и набор данных можно представить в любом человеко-машино-читаемом виде (JSON, YAML, итд), засунув его под меркуриал и разбив на несколько файлов по отдельной модели в каждом (там моделей несколько, они зависят друг от друга и работать над ними лучше независимо).
Но вторая цель хранения истории - это генерить патчи для миграции данных, которые эта модель описывает, между версиями модели. Т.е. добавили в модель поле, пару таблиц, еще чего-нибудь навертели - нужно из этого сгенерировать аццкий SQL скрипт, который это все применит к уже работающей базе данных. А тут уже текстовых diff-ов мало.

Можно было бы сделать собственное хранение истории, благо описание самой модели хранится в ней самой и прикрутить к кодогенератору еще и генерацию триггеров аудита изменений особой проблемы нет. Но тогда будет дублирование функциональности меркуриала, причем каждое изменение будет в двух местах - в основных данных, и в логе изменений дописано в конец. Но другого разумного способа сопоставить историю типизированных данных и ее отражение в виде сhangeset-ов меркуриала я не вижу.

Date: 2010-06-12 06:59 pm (UTC)
From: [identity profile] permea-kra.livejournal.com
Что мешает описать модификации модели как набор последовательных операций, в скрипты миграции транслируемые однозначно ?

Date: 2010-06-12 07:09 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Ничего, я про это и пишу.
Просто я хочу это дело заинтегрировать с системой контроля версий, чтобы не повторять ее функциональность.

Date: 2010-06-12 07:10 pm (UTC)
From: [identity profile] permea-kra.livejournal.com
>>Просто я хочу это дело заинтегрировать с системой контроля версий,чтобы не повторять ее функциональность.
А зачем? Если инструмент не может то, что вам надо, то нужно ли его насиловать?

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 23rd, 2025 08:35 am
Powered by Dreamwidth Studios