Руководства по diff
Как работает сравнение текстов, как читать результат и когда какие опции использовать.
Как diff находит различия — LCS и алгоритм Майерса
Простое объяснение принципа diff: наибольшая общая подпоследовательность (LCS), сценарий редактирования, алгоритм O(ND) Майерса, сравнение по строкам и по словам.
02 · guide/diff-algorithmsMyers, Patience, Histogram — сравнение алгоритмов diff
Как работают варианты опции --diff-algorithm в git diff (myers, minimal, patience, histogram) и почему их результаты различаются, — на примерах.
03 · guide/read-unified-diffКак читать unified diff (patch) — руководство для ревью кода
Разбираем на примере заголовки --- и +++, числа в заголовке блока @@, контекстные строки, пометку No newline at end of file и расширенные заголовки diff --git.
04 · guide/whitespace-optionsЧем различаются опции игнорирования пробелов — diff -b, -w, -B, -Z и аналоги в git
Точные различия между игнорированием пробелов в конце строк, количества пробелов (-b), всех пробелов (-w), пустых строк (-B) и регистра — с опциями GNU diff и git и примерами.
05 · guide/compare-documentsВычитка документов и сравнение договоров — как найти все различия двух версий
Порядок действий и приёмы для текстового сравнения черновика и исправленной версии, отправленного и возвращённого договора: сравнение по фрагментам и символам, очистка переносов из PDF, чек-лист проверки договора.
06 · guide/json-diffКак сравнивать JSON — сортировка ключей и нормализация
Как убрать ложные различия из-за порядка ключей, отступов и записи чисел при сравнении двух JSON, а также о порядке массивов, больших целых числах и отличии от JSON Patch.
07 · guide/line-endingsСимволы конца строки (CRLF и LF) и невидимые различия — когда изменёнными считаются все строки
Причины, по которым визуально одинаковые файлы различаются в diff во всех строках: переводы строк CRLF и LF, перевод строки в конце файла, BOM, табуляции и пробелы, особые пробелы, нормализация Юникода, — и способы их устранить.