guides/

Руководства по diff

Как работает сравнение текстов, как читать результат и когда какие опции использовать.

01 · guide/how-diff-works

Как diff находит различия — LCS и алгоритм Майерса

Простое объяснение принципа diff: наибольшая общая подпоследовательность (LCS), сценарий редактирования, алгоритм O(ND) Майерса, сравнение по строкам и по словам.

02 · guide/diff-algorithms

Myers, 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, табуляции и пробелы, особые пробелы, нормализация Юникода, — и способы их устранить.