Как получить разницу между двумя версиями в exists-db

Я пытаюсь использовать существующую базу данных для управления версиями. Есть ли способ перечислить различия?

Я включил управление версиями в exists-db, загрузил файл json и внес в него некоторые изменения. Теперь в разделе version доступны две версии файлов. Как я могу получить/перечислить разницу между двумя версиями


person nes    schedule 16.02.2016    source источник
comment
Вы не предоставили подробного описания своего сценария. Пробовали ли вы официальную документацию?   -  person Honza Hejzl    schedule 16.02.2016
comment
Я включил управление версиями в exists-db, загрузил файл json и внес в него некоторые изменения. Теперь в разделе version доступны две версии файлов. Как я могу получить/перечислить разницу между двумя версиями   -  person nes    schedule 18.02.2016
comment
В документации в разделе Проверка версий через веб-приложение администратора указано: Эта часть документации не отражает текущее состояние программного обеспечения. Старый интерфейс администратора HTML был удален, что означает, что панели управления версиями, упомянутые в документации ниже, также удалены. Кажется, может быть вариант, как это сделать, но никто, кроме разработчиков, не знает, как это сделать. Думаю, новая версия eXist выйдет через несколько дней. Тогда мы можем увидеть, как это было переписано (надеюсь, тогда это будет ясно!). Если нет, я попытаюсь спросить разработчиков напрямую.   -  person Honza Hejzl    schedule 18.02.2016
comment
@Honza Hejzl спасибо за ответ, я видел, что старый HTML-интерфейс удален в текущей версии, но они не упомянули, как получить разницу в текущей версии.   -  person nes    schedule 18.02.2016


Ответы (1)


В пространстве имен с префиксом «управление версиями» есть модуль XQuery, который позволяет выполнять различные запросы к версиям.

Модуль управления версиями был удален из кодовой базы eXist после eXist 2.2, поскольку было обнаружено, что он содержит код под лицензией GPL, который несовместим с лицензией LGPL eXist.

Код модуля управления версиями теперь можно найти здесь: https://bitbucket.org/zwobit/versioning/src/7e177a5f3cf8ad6980a502eb5a0c20cf136e7a7c/src/main/java/org/exist/versioning/xquery/?at=разработка

Если вы посмотрите на versioning.xqm, DiffFunction.java и PatchFunction.java, вы увидите функции, которые доступны для вызова из XQuery.

Насколько я помню, вы не можете получить различия между документами JSON, поскольку eXist предоставляет различия только для документов XML. Вместо этого модуль управления версиями обрабатывает документы JSON как двоичные и, следовательно, неизменяемые, каждое изменение в документе создает совершенно новый документ (что может быть тем, что вам нужно).

Ничто не мешает вам вызывать GNU diff из XQuery (через модуль процесса) и передавать через него оба документа JSON.

person adamretter    schedule 21.02.2016