Три способа слияния алгоритмов для текста

Итак, я работал на сайте типа wiki. То, что я пытаюсь решить, является лучшим алгоритмом для слияния статьи, которая одновременно редактируется двумя пользователями.

До сих пор я рассматриваю возможность использования метода Wikipedia для слияния документов, если отредактированы две несвязанные области, но выбрасывает более старое изменение, если конфликтуют два коммита.

Мой вопрос таков: если у меня есть оригинальная статья и два ее изменения, каковы наилучшие алгоритмы для их слияния, а затем обрабатывать конфликты по мере их возникновения?

Ответ 1

Bill Ritcher отличная статья "" Надежное трехстороннее слияние" рассказывает о некоторых распространенных ошибках с тремя способами слияния и умных решений для них что использовались коммерческие пакеты SCM.

Трехстороннее слияние автоматически применяет все изменения (которые не перекрываются) из каждой версии. Хитрость заключается в том, чтобы автоматически обрабатывать как можно больше почти перекрывающихся областей.

Ответ 2

Там формальный анализ алгоритма diff3 с псевдокодом в этой статье: http://www.cis.upenn.edu/~bcpierce/papers/diff3-short.pdf

Он называется "Формальное расследование Diff3" и написан Санджив Кханной, Кешавом Куналом и Бенджамином Пирсом из Yahoo.

Ответ 3

Честно говоря, я бы положился на diff3. Это почти во всех дистрибутивах Unix, и вы всегда можете создавать и компоновать .EXE для Windows, чтобы убедиться, что он существует для ваших целей.