TOML Diff
Сравнить два TOML-файла по значениям, а не по строкам.
Как это работает
Обычный построчный diff двух TOML файлов покажет разницу, даже если кто-то просто переставил таблицы местами или поменял стиль отступов, хотя данные внутри остались теми же самыми. Toml diff online сравнивает файлы по реальным значениям после парсинга, а не по тексту строк, и показывает только смысловые различия.
Инструмент парсит оба TOML документа в структуры данных и рекурсивно сравнивает их поле за полем, показывая добавленные ключи, удаленные ключи и ключи, у которых значение изменилось, вне зависимости от того, как именно был отформатирован исходный текст файла.
Полезно применять при сравнении Cargo.toml или pyproject.toml между разными ветками перед мержем, при аудите изменений конфигурации между версиями релиза, или просто чтобы понять, что реально поменялось в конфиге, а не тратить время на визуальное сравнение отформатированного по-разному текста.
Частые вопросы
Покажет ли diff разницу, если поменялся только порядок таблиц в файле?
Нет, сравнение идет по значениям после парсинга, а не по порядку строк текста, если данные идентичны, просто таблицы в файле были в другом порядке, diff покажет отсутствие различий.
Как обрабатываются различия внутри массивов таблиц?
Если значение массива в целом изменилось, это будет показано как изменение по соответствующему ключу, поэлементное сравнение содержимого сложных массивов таблиц в эту версию не входит.
Можно ли использовать это для сравнения Cargo.lock файлов?
Технически Cargo.lock тоже TOML файл и инструмент его распарсит, но такие файлы обычно очень большие и генерируются автоматически, смысловой diff по ним менее полезен, чем для компактных конфигов вроде Cargo.toml.
Что если один из файлов содержит синтаксическую ошибку TOML?
Парсинг такого файла завершится ошибкой еще до сравнения, инструмент покажет сообщение о проблеме синтаксиса вместо результата diff, сначала стоит исправить сам TOML через валидатор.