Три способа слияния алгоритмов для текста
Итак, я работал на сайте типа 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, чтобы убедиться, что он существует для ваших целей.