§

Options

Zobrazení
Granularita
Preprocessing
§

Input

České vývojářské týmy narazí na diff plochu desítkykrát denně: Git pull-request reviews na GitHubu a GitLabu, sledování změn smluv, peer review workflow. Spuštění porovnání v záložce prohlížeče — bez nahrávání, bez účtu, bez logů třetích stran — udržuje workflow rychlý.

Jak fungují diff algoritmy

Každé zobrazení diffu na této stránce je vytvořeno Myersovým algoritmem — technikou z roku 1986 od Eugena W. Myerse, která najde nejkratší editační skript mezi dvěma sekvencemi tokenů v čase O((N+M)D), kde D je editační vzdálenost.

  1. Tokenizace vstupů — Před porovnáním algoritmus rozdělí každý vstup na sekvenci tokenů. Granularita řádků dělí na nové řádky; granularita slov dělí na hranicích bílých znaků a interpunkce; granularita znaků považuje každý Unicode kódový bod za vlastní token.
  2. Sestavení editačního grafu — Myersův algoritmus modeluje porovnání jako cestu skrz 2D mřížku, kde pohyb doprava znamená 'smazat z originálu', pohyb dolů znamená 'vložit ze změny' a diagonální pohyb znamená 'token odpovídá v obou'.
  3. Extrakce LCS — Diagonální pohyby v nejkratší cestě sledují nejdelší společnou podposloupnost — tokeny, které se vyskytují v obou vstupech ve stejném relativním pořadí. Každý token v LCS je 'nezměněný'; vše ostatní je buď přídavek nebo odstranění.
  4. Aplikace možností předzpracování — Pokud povolíte 'Ignorovat velikost písmen', oba vstupy jsou převedeny na malá písmena před LCS. 'Ignorovat bílé znaky' slučuje více mezer do jedné. 'Oříznout každý řádek' odstraňuje úvodní a koncové bílé znaky na řádku.
  5. Vykreslení zvoleného zobrazení — Výstup je stejný LCS výsledek zobrazený třemi způsoby: Vedle sebe ukazuje originál vlevo a změnu vpravo ve dvousloupcové mřížce s červenými a zelenými zvýrazněními. Sjednocené ukazuje jeden sloupec s prefixy − a +. Vložené ukazuje odstranění jako červené přeškrtnutí a přídavky jako zelené podtržení.
  6. Výpočet souhrnného pruhu — Po vykreslení nástroj spočítá, kolik tokenů bylo přidáno, odebráno a nezměněno, pak vypočítá podobnost jako poměr nezměněných tokenů k větší ze dvou délek vstupů.

Proč použít diff checker

  • Code review bez Git klienta — Vložte dvě verze konfiguračního souboru, SQL migrace nebo shell skriptu a uvidíte, co se změnilo, bez klonování repa, přepínání větví nebo čekání na CI pipeline.
  • Smluvní a dokumentové změny — Word-level diff ukazuje, které termíny se mezi návrhy smluv posunuly, rychleji než panel Track Changes ve Wordu.
  • Revize esejí a draftů — Spisovatelé porovnávající první draft proti upravené verzi mohou přepnout na granularitu slov a vidět každou substituci bez opětovného čtení obou kopií.
  • Porovnání logů a konfigurací — Správci porovnávající dva snapshoty konfigurace serveru, dva cron plány nebo dva ps aux výstupy mohou použít granularitu řádků k nalezení jediného změněného parametru.

Běžná použití

Text diff se objevuje na konci každého editačního cyklu v psaní, vývoji a operacích.

  • Code review: vložte dvě implementace funkcí vedle sebe pro pochopení logické změny.
  • QA internacionalizace: porovnejte anglický zdrojový řetězec s jeho přeloženým ekvivalentem na úrovni slov.
  • Analýza incidentů: porovnejte dva snapshoty Kubernetes manifestů pro izolaci změny konfigurace.

Příklad použití

Vezměte pětiřádkový server config. Originál: host=localhost, port=5432, dbname=app_db, user=app, password=secret. Změna: host=db.prod.example.com, port=5432, dbname=app_db, user=app_prod, password=secret. S granularitou řádků a zobrazením Vedle sebe, řádek 1 ukazuje červeně vlevo a zeleně vpravo, řádek 4 ukazuje červeně a zeleně, a řádky 2, 3 a 5 zůstávají nezměněné.

Běží to v mém prohlížeči?

Ano. Celý výpočet diffu běží na straně klienta pomocí open-source knihovny jsdiff načtené se stránkou. Nic, co napíšete, vložíte nebo porovnáte, není odesláno na server.

Co znamená procento podobnosti?

Podobnost je vypočítána jako nezměněné tokeny / max(celkové tokeny v originálu, celkové tokeny ve změně). Skóre 100% znamená, že oba vstupy jsou totožné po aplikaci vašich možností předzpracování.

Mohu diffovat JSON / YAML / XML sémanticky?

V tomto nástroji ne. Toto je textový diff, takže změna formátování JSON nebo XML stále ukazuje mnoho změn, i když jsou data logicky totožná.

Jak se liší sjednocené a vedle sebe zobrazení?

Vedle sebe vykresluje dva sloupce: originál vlevo a změněnou verzi vpravo. Sjednocené vykresluje jeden sloupec s prefixy − a + — stejné rozvržení, jaké git diff tiskne do terminálu.

Vložte originál vlevo, změněnou verzi vpravo, vyberte zobrazení a granularitu a porovnání se objeví v milisekundách. Zapněte Živý režim a diff se spustí znovu při každém stisku klávesy. Stáhněte výsledek jako standardní .patch soubor. Bez nahrávání, bez účtu, bez kvóty.