/diff

Tekst-diff: Sammenlign to tekster online

Sammenlign to tekstdokumenter eller kildekode og se forskjeller og endringer linje for linje.

Slik fungerer det

Lim inn to tekster, så markeres det som er lagt til (grønt) og fjernet (rødt). Bytt mellom linje- og ord-nivå for finere eller grovere sammenligning.

Om dette verktøyet

Diff-verktøyet sammenligner to tekster og markerer forskjellene linje for linje eller tegn for tegn. Det er nyttig når du vil se hva som faktisk endret seg mellom to versjoner av en kontrakt, en konfigurasjonsfil, kildekode eller et brev, uten å måtte lete manuelt. Verktøyet kjører helt i nettleseren og støtter både vanlige tekstforskjeller og strukturell sammenligning av JSON. Grønn markerer det som er lagt til, rød det som er fjernet, og du kan bytte mellom «unified»-visning og side-ved-side.

Slik bruker du det

  1. Lim inn den «gamle» versjonen i venstre panel og den «nye» i høyre.
  2. Verktøyet oppdaterer forskjellene i sanntid, med farger som viser tillegg og fjerninger.
  3. Bytt mellom «linjediff» og «karakterdiff» etter behov, karakterdiff er nyttig for korte tekster.
  4. For strukturell sammenligning av JSON, aktiver «JSON-modus» i verktøylinjen, den ignorerer rekkefølge på nøkler.

Eksempler

Enkel tekstendring
InnHei verden Dette er tekst Slutt
UtHei verden Dette er ny tekst Slutt
Linje 2 markeres som endret: «Dette er tekst» → «Dette er ny tekst».
JSON-strukturdiff
Inn{"a":1, "b":2}
Ut{"b":2, "a":1}
I JSON-modus regnes objekter som like når nøkkelrekkefølge er annerledes men innhold er identisk.

Vanlige bruksområder

  • Sammenligne to versjoner av en kontrakt eller et notat.
  • Se hva som endret seg i en config-fil før du committer.
  • Feilsøke hvorfor en API-respons plutselig ser annerledes ut.
  • Verifisere at en oversettelse ikke har mistet setninger.
  • Sjekke om to strømmer av JSON fra ulike systemer faktisk er semantisk like.

Ofte stilte spørsmål

Hva er forskjellen på «unified diff» og side-ved-side?
Unified viser før- og etter-linjer i samme kolonne, som git-diff. Side-ved-side viser to kolonner samtidig og er lettere å lese ved store endringer. Velg det som gir raskest oversikt.
Er tekstene mine sikre?
Ja. All sammenligning skjer i nettleseren. Ingenting sendes til en server, og teksten forsvinner så snart du lukker fanen.
Håndterer verktøyet store filer?
Opptil noen MB per side er greit på en moderne maskin. Diffing er kvadratisk i verste fall, så to filer på 10 MB kan ta noen sekunder. Del i biter om det blir tregt.
Kan jeg ignorere whitespace?
Ja. Slå på «Ignorer whitespace» i verktøylinjen, da regnes forskjeller i mellomrom, tab og linjeskift bort. Nyttig når du sammenligner formatert versus uformatert kode.

Teknisk bakgrunn

Klassisk diff bygger på Myers-algoritmen fra 1986, som finner den lengste felles delsekvensen (LCS) mellom to filer med O((N+M)·D)-kompleksitet, der D er antall forskjeller. Algoritmen utgjør grunnlaget for GNU diff, git, Mercurial og nesten alle diff-visere i moderne kodeeditorer. Karakter-diff bruker samme prinsipp, men på tegnnivå og med små justeringer for å lage lesbare merker. For strukturell JSON-sammenligning tolker verktøyet begge sider som JavaScript-objekter og gjør et dypt sammenlik-tre, uavhengig av nøkkelrekkefølge og whitespace. Enkelte diff-implementasjoner bruker heuristikker for å håndtere «trivielle» endringer, som å ignorere blanke linjer, whitespace-only-endringer, samsvarende blokker som er delvis flyttet, eller å bruke patience-diff (populær i git 2.11+) for penere grupperinger. Diff er også fundamentet for merge-verktøy, som forsøker å kombinere endringer fra to grener uten manuell inngripen.