Sammenlign tekst
Lim inn originalen og den endrede versjonen, så markeres hver forskjell, helt ned til enkeltord.
Lim inn tekst i begge feltene for å sammenligne.
Slik fungerer det
Sammenligningen finner den korteste rekken av tilføyde og fjernede linjer som gjør den ene teksten om til den andre, med algoritmen til Eugene Myers fra 1986. Det er samme metode som git bruker som standard. Linjer som er endret, sammenlignes deretter ord for ord, slik at du ser nøyaktig hva som skiller.
Tilføyde linjer vises med grønn bakgrunn og fjernede med rød. En endret linje regnes som én fjernet og én tilføyd, akkurat som i andre diffverktøy.
Ignorer store og små bokstaver gjør at Hei og hei regnes som like. Ignorer mellomrom ser bort fra mellomrom i starten og slutten av linjen og fra flere mellomrom etter hverandre, noe som er nyttig når innrykk er endret.
Unified diff er tekstformatet som kommandoen diff -u gir, med tre linjer kontekst rundt hver endring. Det kan limes inn i en feilrapport eller leses av patch og git apply.
Tekstene forlater aldri nettleseren din. Svært lange tekster som er nesten helt forskjellige, sammenlignes ikke linje for linje; da vises alle linjene som endret.
Slik sammenligner verktøyet
Først telles like linjer i begynnelsen og slutten bort, fordi de ikke kan inngå i noen endring. Mellom dem søker Myers’ algoritme etter den korteste rekken av fjernede og tilføyde linjer. Linjeskift med CR LF eller bare CR gjøres om til LF på forhånd, så den samme teksten fra Windows og fra Mac regnes som lik. Innenfor en endring vises fjernede linjer før tilføyde, og de pares i rekkefølge for sammenligningen ord for ord. Ordene deles ved mellomrom og skilletegn, så et endret komma markeres for seg.
Eksempel
Sammenlign linjene eple, banan, sitron med eple, banan split, sitron, daddel, begge med et linjeskift etter siste linje. Algoritmen beholder eple og sitron, fjerner banan og legger til banan split og daddel: to tilføyde linjer og én fjernet. Linjen banan split pares med banan, og bare ordet split med mellomrommet foran markeres som nytt. I unified diff blir det ett enkelt stykke med overskriften @@ -1,3 +1,4 @@: det begynner på linje 1 i begge tekstene og omfatter tre linjer i den gamle og fire i den nye.
Uten linjeskift etter siste linje blir resultatet et annet. Ifølge GNU Diffutils er en siste linje uten linjeskift ikke lik den samme linjen med linjeskift, og sitron var siste linje bare i den gamle teksten. Verktøyet viser da sitron som fjernet og tilføyd, tre tilføyde linjer og to fjernede, og skriver \ No newline at end of file etter begge tekstenes siste linje, slik diff -u gjør. Side ved side og i én kolonne får den fjernede linjen sitron merket «mangler linjeskift på slutten», siden den ellers ser uendret ut. Ignorer mellomrom ser bort fra forskjellen.
Grenser
Arbeidet begrenses til 4 000 endringer på linjenivå. To tekster med 2 001 helt ulike linjer hver går over grensen, og da vises alle linjene som fjernet og tilføyd uten sammenligning. På ordnivå er grensen 2 000 endringer per linjepar, og er mer enn 80 % av tegnene endret, vises linjen hel uten ordmarkering.
Det som ikke synes
Flyttede avsnitt blir ikke gjenkjent, fordi algoritmen bare kjenner fjerning og tilføying. Flyttes de to første linjene i en tekst på fem linjer ned foran den siste, viser verktøyet to fjernede og to tilføyde linjer. Ignorer mellomrom fjerner ikke mellomrom inne i linjen, men slår dem bare sammen: a,b og a, b regnes fortsatt som ulike.