Поиск того, что изменилось: руководство по Text Diff
Находи различия между файлами, конфигами и версиями кода, не сходя с ума.
Что-то сломалось. Конфигурационный файл выглядит одинаково. Но он не одинаковый — где-то в этих 500 строках один символ изменился.
Удачи найти его вручную.
Инструменты diff существуют именно для этого. Сравни две версии, увидь, что изменилось. Время отладки падает с часов до секунд.
Когда Diff спасает тебя
Конфигурационные файлы. Развёртывание сломалось? Сравни рабочую конфигурацию с текущей.
Обзор кода. Что на самом деле изменилось в этом pull request?
API-ответы. Почему тот же endpoint возвращает другие данные сейчас?
Версии документов. Что клиент изменил в контракте?
Чтение вывода Diff
Большинство инструментов diff показывают:
- Удалённые строки красным (с префиксом
-) - Добавленные строки зелёным (с префиксом
+) - Контекстные строки неизменённые, показывающие окружающий контент
function process(data) {
- return data.toLowerCase();
+ return data.toLowerCase().trim();
}
Одна строка изменилась. Старая версия не обрезала, новая обрезает.
Бок о бок vs объединённый
Объединённый diff показывает изменения встроенно. Компактный, хорош для маленьких изменений.
Бок о бок показывает старую и новую версии рядом. Лучше для понимания больших изменений.
Выбирай в зависимости от того, что сравниваешь.
Посимвольный Diff
Построчный diff показывает, какие строки изменились. Посимвольный diff показывает точно какие символы внутри этих строк.
Для отладки конфигурации посимвольный помогает найти:
- Лишние пробелы
- Неправильные кавычки (' vs ")
- Невидимые символы
- Различия в регистре
Практические советы
Убирай пробелы, когда не важно. Пробелы в конце и разные окончания строк создают шум.
Игнорируй регистр, когда уместно. Иногда "TRUE" и "true" одно и то же.
Используй контекст. Видение окружающих строк помогает понять изменения.
Осторожно сравнивай структурированные данные. JSON и XML должны быть отформатированы идентично перед сравнением, или различия в форматировании замаскируют реальные изменения.
Частые варианты использования
Отладка различий в окружениях. Сравни staging-конфигурацию с production. Различие обычно и есть баг.
Отслеживание изменений во времени. Сохраняй версии до и после изменений. Diff говорит тебе точно, что ты сделал.
Валидация миграций. Сравни дампы базы данных до и после. Неожиданные различия означают баги миграции.
Обзор кода. Увидь, что действительно меняется, а не что автор заявляет изменённым.
Когда построчного Diff недостаточно
Бинарные файлы. Инструменты diff работают на тексте. Изображениям, PDF и исполняемым файлам нужны специализированные инструменты.
Семантически идентичный, но по-разному отформатированный. Два JSON-файла с теми же данными, но разным форматированием покажут много различий. Сначала нормализуй.
Перемещённый код. Стандартный diff показывает удаление и добавление отдельно. Продвинутые инструменты могут обнаружить перемещения.
Diff — недооценённый инструмент отладки. Когда что-то "выглядит одинаково", но ведёт себя по-разному, прекращай гадать и сравнивай. Различие там — тебе просто нужно его увидеть.