Ответ 1
Я думаю, что поддерживаются несколько алгоритмов, потому что ни один из алгоритмов не является лучшим выбором во всех случаях.
Различия заключаются в возможности считывания выходного патча и времени обработки, необходимого для создания патча.
Подводя итог, я понимаю, что эти различия:
- Myers: оригинальный алгоритм, реализованный в xdiff (http://www.xmailserver.org/xdiff-lib.html и http://www.xmailserver.org/diff2.pdf), оптимизируя "расстояние редактирования" для измененных строк.
- Минимальное: Myers плюс попытка минимизировать размер патча.
- Терпение. Попытка улучшить читаемость патча по сравнению с размером патча и временем обработки. См. Что такое` git diff -patience` для? и http://bramcohen.livejournal.com/73318.html или http://alfedenzo.livejournal.com/170301.html для описания.
- Гистограмма: в основном создана для скорости. Быстрее, чем Myers and Patience, изначально разработанный в jgit (http://eclipse.org/jgit/)
Вот сравнение скорости для Майерса, терпения и гистограммы: http://marc.info/?l=git&m=133103975225142&w=2
Здесь сравнивается вывод diff из Histogram vs Myers: http://marc.info/?l=git&m=138023003519837&w=2