Какой общий алгоритм у системы контроля версий?
Побеждают, те изменение, которое выбрал пользователь при слиянии.  Во например:
Есть строка:  ABCD
1 изменение: ACBD
2 изменение: ACBE
3 изменение: DCBA
Строка состоит из символов:
A -> D
B -> C 
C -> B 
D -> E -> A
У первых трех символов конечное изменение совпадает, значит они безусловно будут приняты
А у последнего нужно пользователю, которые выполняет слияние выбрать E или A
То есть либо конечный результат:
DCBE
DCBA
И зачем вы хотите создать то, принцип работы чего не понимаете?
Кстати, обнаружение изменений в исходных текстах гораздо проще реализовать, чем поиск изменений в обычном тексте.
Если говорить по сути вопроса. Если обнаруживается изменение одного и того же фрагмента, то, во-первых, предлагается сделать апдэйт, чтобы получить изменение в файле. Во-вторых, уведомляете о возникновении конфликта и предлагаете разрешить коллизию в ручном или автоматическом режиме. В ручном всё очевидно, в автоматическом или по дате изменения брать или по количеству изменений.