{ }JSONKit.tools

YAML Diff — zwei YAML-Dateien vergleichen

Zwei YAML-Dokumente danach vergleichen, was sie bedeuten, nicht wie sie geschrieben sind. Anführungszeichen, Einrückung, Schlüsselreihenfolge und Anker hören auf zu zählen — nur echte Unterschiede erscheinen.

YAML links

YAML rechts

Unterschiede

–

Über dieses Tool

Zwei YAML-Dateien können völlig verschieden aussehen und identische Daten enthalten: Schlüssel umsortiert, Skalare mal so und mal anders quotiert, eine Blockliste im Flow-Stil neu geschrieben. Deshalb ist ein Zeilen-Diff eines Manifests oder einer CI-Konfiguration so oft nutzlos. Diese Seite parst beide Seiten und vergleicht die entstehende Struktur, was du siehst ist also der Unterschied in den Daten. Kommentare und Ankernamen verschwinden dabei, weil beides das Parsen nicht überlebt.

So wird es benutzt

  1. 1Die beiden YAML-Dokumente ins linke und rechte Panel einfügen.
  2. 2Das Ergebnis als Geteilt, Baum oder Liste lesen und mit den Pfeilen zwischen Änderungen springen.
  3. 3Nur Änderungen einschalten, um alles Unveränderte wegzufalten.

Häufige Fragen

›Warum YAML strukturell vergleichen statt Zeile für Zeile?

Weil YAML viele Wege kennt, dieselben Daten zu schreiben. Quotierte oder nackte Skalare, Block- oder Flow-Stil, ein an eine andere Position gerückter Schlüssel, geänderte Einrückung — ein Text-Diff malt all das als Änderung an. Erst zu parsen bedeutet, dass nur echte Unterschiede gemeldet werden.

›Werden Kommentare verglichen?

Nein. Kommentare sind keine Daten und überleben das Parsen nicht, einen zu ändern erzeugt also keinen Unterschied. Wer Kommentare prüfen muss, nimmt zusätzlich ein Text-Diff.

›Und was ist mit Ankern und Aliasen?

Sie werden vor dem Vergleich expandiert, ein einmal geschriebener und zweimal referenzierter Wert wird also als der Wert verglichen, zu dem er auflöst. Nur den Ankernamen zu ändern zeigt deshalb nichts.

›Kann ich eine YAML-Datei gegen eine JSON-Datei vergleichen?

Die JSON-Seite mit der Seite JSON zu YAML konvertieren und beide hier einfügen — oder umgekehrt und auf der Seite JSON Diff vergleichen. Darunter ist es derselbe Vergleich.

›Ist das für Kubernetes-Manifeste nützlich?

Das ist der Standardfall. Ein gerendertes Manifest gegen das im Cluster zu vergleichen ist genau die Stelle, an der Rausch aus Schlüsselreihenfolge und Anführungszeichen ein Text-Diff unbrauchbar macht.