vodnicear
@vodnicear

Как объединить несколько версий текста в одну?

Ситуация такая, есть некии текст, и есть пользователи которые его редактируют.
Когда один пользователь редактирует текст, новая версия сохраняется в БД и ждет одобрения.

До того как новая версия текста будет одобрена или отклонена, текст могут редактировать еще другие пользователи.

Вопрос в том как это объеденять в конце?
-------
управление версиями, их одобрение нужно реализовать на сайте
на сколько знаю git с БД не работает, может быть есть еще способы
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега Веб-разработка
{PHP, MySql, HTML, JS, CSS} developer
Как-как... Руками в итоге. Все непересекающиеся принятые правки мержить по порядку добавления, пересекающиеся - руками в режиме разрешения конфликтов версий... И должен быть батька над проектом, который склеивает твердой рукой, сбрасывая в пропасть недостойных убирая лишнее.
Ответ написан
Lobotomist
@Lobotomist
Software Developer
Для объединения двух версий текста можно использовать утилиту diff3, парсить ее вывод, а для пользователя реализовать интерфейс для просмотра ее вывода и решения конфликтов. Готовых библиотек для представления diff в веб я не знаю, но, вероятно, таковые имеются.

diff3 mine older yours, где mine and yours - версии для слияния, а older - базовая версия.

Учитывая, что вы хотите хранить историю версий текста - может быть имеет смысл использовать для этого, собственно, гит репозиторий под капотом - он для того и предназначен. В зависимости от специфики можно как иметь по отдельному репозиторию для каждого текста, так и один общий для всех. И в нем хранить историю версий и через него же мерджить версии. Возможно, получится найти и использовать готовые интерфейсы для работы с git через веб, либо надо будет написать свой. А в базе можно хранить только финальный текст, без истории.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы