Подтвердить что ты не робот

Как программно объединить текстовые файлы с потенциальными конфликтами (ala git или svn и т.д.)?

Как часть более крупного проекта, я хочу, чтобы можно было взять два тела текста и передать их алгоритму слияния, который возвращает либо результат с автоматическим объединением (в тех случаях, когда изменения не противоречат друг другу), либо выдает ошибку и (потенциально) создает единый текстовый документ с выделенными конфликтующими изменениями.

В принципе, я просто хочу программный способ сделать то, что делает каждая система управления версиями на планете, внутренне, но мне трудно найти ее. Есть тонны визуальных графических интерфейсов для такого рода вещей, которые доминируют в моих результатах поиска, но ни один из них, похоже, не может легко получить доступ к основному алгоритму слияния. Все ли полагаются на какой-то общий и хорошо понятый алгоритм/библиотеку, и я просто не знаю названия, поэтому мне трудно его искать? Является ли это лишь незначительной настройкой diff, и я должен искать библиотеки diff вместо библиотек слияния?

Библиотеки Python были бы наиболее полезными, но я могу жить с накладными расходами на взаимодействие с какой-либо другой библиотекой (или решением командной строки), если это необходимо; эта операция должна быть относительно нечастой.

4b9b3361

Ответ 1

Вероятно, вы ищете алгоритмы слияния, такие как 3-стороннее слияние, которое вы можете найти во многих проектах с открытым исходным кодом, например. в базаре VCS (источник merge3.py).