Сравнение YAML-документов
Сравните два YAML-документа и точно увидьте, что изменилось, — добавленные, удалённые и изменённые ключи с путём к каждому из них, а также построчный unified diff нормализованного YAML. Структурное сравнение игнорирует отступы, кавычки и различия flow- и block-стиля, а также поддерживает потоки из нескольких документов. Работает полностью в вашем браузере.
Ввод
Параметры
Используйте режим «без учёта порядка», когда список на самом деле является неупорядоченным множеством и его перестановка не должна считаться изменением.
Считать 1 и "1", а также true и "true" равными — полезно, когда один файл заключает значения в кавычки, а другой нет.
Вывод
| Метрика | Значение |
|---|---|
| No data yet | |
Каждое различие с указанием пути — + добавлено, - удалено, ~ изменено.
Оба документа сначала заново сериализуются с отступом в 2 пробела, поэтому различия форматирования не создают шума.
Enter both documents to see the differences.
Руководства
Вставьте две версии YAML-файла — манифест Kubernetes до и после изменения, две конфигурации CI-конвейера или docker-compose.yml в разных окружениях — и точно увидьте, чем они отличаются. Этот бесплатный онлайн-инструмент читает оба документа как разобранный YAML, а не как обычный текст, поэтому сдвиг отступа, кавычки вокруг значения или переход от block-стиля к flow-стилю никогда не покажутся изменением. Вы получаете структурный отчёт с путём к каждому различию, а также нормализованный unified diff, который можно скопировать в файл патча. Всё работает в вашем браузере — без загрузки файлов и регистрации.
Как пользоваться
- Вставьте исходный файл в YAML A, а изменённый — в YAML B.
- Выберите способ сравнения элементов списков — по позиции (по умолчанию; подходит для упорядоченных списков вроде аргументов контейнера) или без учёта порядка (подходит для списка, который на самом деле является множеством: теги, разрешённые хосты).
- Включите Игнорировать различия типов, если один файл заключает значения в кавычки, а другой нет, — тогда
8080и"8080"будут считаться равными. - Смотрите Сводку для подсчётов, Структурный diff для списка изменений по путям и Unified diff для построчного вида.
Результат обновляется автоматически по мере ввода.
Как структурный diff определяет, что изменилось?
Оба файла разбираются, а затем два полученных значения обходятся вместе. В каждом отображении (mapping) инструмент сообщает о ключах, присутствующих только с одной стороны (добавленных или удалённых), и рекурсивно спускается в ключи, присутствующие с обеих; в каждой последовательности (sequence) элементы сравниваются один за другим; для каждого скаляра сравнивается значение. Каждая запись начинается с + (добавлено), - (удалено) или ~ (изменено) и пути через точку вида spec.template.spec.containers[0].image, так что вы сразу перейдёте к нужной строке даже в манифесте на 400 строк.
Почему «структурный» diff лучше обычного текстового?
Потому что большинство текстовых различий в YAML — не настоящие различия. ports: [80, 443] и block-последовательность из двух строк — это одни и те же данные; то же верно для name: app и "name": app; и для того же файла, у которого отступы изменились с 4 пробелов на 2. Построчный diff сообщит обо всех этих случаях. Этот инструмент не сообщит ни об одном — только о изменениях, которые действительно дойдут до того, кто использует файл.
Тогда зачем ещё и unified diff?
Потому что именно построчный вид вставляется в патч или code review. Чтобы он оставался полезным, оба файла сначала заново сериализуются из разобранного вида с фиксированным отступом в 2 пробела, и сравнивается уже этот нормализованный текст — поэтому в патче видны реальные правки, а не шум форматирования.
Поддерживаются ли файлы из нескольких документов?
Да. Потоки, разделённые ---, сравниваются документ за документом по порядку, а пути получают префикс doc[2].…, чтобы было понятно, к какому документу относится различие. Лишние документы с любой стороны помечаются как добавленные или удалённые.
А как же комментарии?
Комментарии не сравниваются. Они не несут смысла ни для одного потребителя данных, а обе картины строятся по разобранным документам, которые их не сохраняют.
Мои данные в безопасности?
Полностью. Разбор и сравнение происходят целиком в вашем браузере — ни один файл не загружается, не логируется и не сохраняется, что важно, когда сравнивается продакшен-манифест.
Нужен не только diff для YAML?
Для сравнения JSON используйте инструмент JSON Compare; для XML — XML Diff Comparator. Если один из файлов не разбирается, валидатор YAML укажет на синтаксическую ошибку.
Use it from code
From 3 credits per callREST API
curl -X POST https://api.iotools.cloud/v1/tool/yaml-diff-comparator \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"yamlA": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n …",
"yamlB": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n …",
"seqOrder": "position",
"looseScalars": ""
}'Swap in your own key from your account. The tool's fields are the body — no wrapper.
Ask an AI agent
Use the IOTools `yaml-diff-comparator` tool (YAML Diff Comparator) on this input:
YOUR_INPUT_HEREPaste this at any agent connected to the IOTools MCP server, then add your input.