Я реализую управление версиями для моей собственной модели домена (отслеживание различий в объектах во время операций обновления).Доменная модель имеет древовидную структуру.Например ( -> является ссылкой)
A
|-> B
|-> C -> A
| -> C
Требования для управления версиями следующие:
- Получить набор измененных полей между двумя версиями объекта домена;
- Доменная модель имеет древовидную структуру;
- Поля могут быть организованы в списки.В следующем примере система должна показать, что элемент Y был удален (но не то, что Z был удален, а Y изменил свое состояние на Z) и X был изменен:
[ v1 ] [ v2 ]
A A
|-> [X, Y, Z] |-> [X, Z]
|-> C |-> M
- Больше неттребования, такие как блокировка / слияние / ветвление.
Я исследую способ получения набора изменений между двумя состояниями одного и того же объекта.Я работаю с Java и заинтересован в существующих подходах / решениях.Например, я ищу описание алгоритма, который Subversion использует для создания следующей ревизии.
Я буду рад получить любые теоретические или практические советы с вашей стороны.
Спасибо